-1
我有一個base64字符串,它是使用另一個應用程序從圖像生成的。現在在我的應用程序中,我想將base64字符串轉換爲字節並將其顯示在PictureBox上。base64字符串到字節到圖像
我已經找到一個示例應用程序,它需要一個字節輸入並設置一個PictureBox圖像。不幸的是,示例應用程序從圖像中獲取字節數組並將其轉換回來。這是它使用的功能。
Public Function PictureFromByteStream(b() As Byte) As IPicture
Dim LowerBound As Long
Dim ByteCount As Long
Dim hMem As Long
Dim lpMem As Long
Dim IID_IPicture(15)
Dim istm As stdole.IUnknown
On Error GoTo Err_Init
If UBound(b, 1) < 0 Then
Exit Function
End If
LowerBound = LBound(b)
ByteCount = (UBound(b) - LowerBound) + 1
hMem = GlobalAlloc(&H2, ByteCount)
If hMem <> 0 Then
lpMem = GlobalLock(hMem)
If lpMem <> 0 Then
MoveMemory ByVal lpMem, b(LowerBound), ByteCount
Call GlobalUnlock(hMem)
If CreateStreamOnHGlobal(hMem, 1, istm) = 0 Then
If CLSIDFromString(StrPtr("{7BF80980-BF32-101A-8BBB-00AA00300CAB}"), IID_IPicture(0)) = 0 Then
Call OleLoadPicture(ByVal ObjPtr(istm), ByteCount, 0, IID_IPicture(0), PictureFromByteStream)
End If
End If
End If
End If
Exit Function
Err_Init:
If Err.Number = 9 Then
'Uninitialized array
MsgBox "You must pass a non-empty byte array to this function!"
Else
MsgBox Err.Number & " - " & Err.Description
End If
End Function
下面是我發現一個base64字符串轉換爲字節的功能,它似乎是轉換,但是當我的字節數據傳遞到上述功能,出現無圖像。
Private Function DecodeBase64(ByVal strData As String) As Byte()
Dim objXML As MSXML2.DOMDocument
Dim objNode As MSXML2.IXMLDOMElement
' help from MSXML
Set objXML = New MSXML2.DOMDocument
Set objNode = objXML.createElement("b64")
objNode.dataType = "bin.base64"
objNode.Text = strData
DecodeBase64 = objNode.nodeTypedValue
' thanks, bye
Set objNode = Nothing
Set objXML = Nothing
End Function
這裏是我的代碼調用函數。
Dim b() As Byte
b = DecodeBase64(Text1.Text)
Dim pic As StdPicture
Set pic = PictureFromByteStream(b)
Set Picture1.Picture = pic
感謝您的建議,我嘗試使用這個到的base64字符串解碼,但我還是沒有得到我的圖片框的圖像。從byte()中設置圖片框圖片的函數怎麼樣?你有其他建議嗎?我真的不知道哪裏出了問題,函數轉換爲字節或函數從字節設置圖像。 – crimson589
請看我更新的答案。 –
感謝您的幫助,我真的很感激。我得到了一些圖像和base64字符串的工作,但我有一個問題。這是我的問題。基本的64字符串來自一個PHP程序。我無法將它提供的base64字符串轉換爲vb6中的圖像,但是我可以將它轉換爲使用.NET 2010的圖像。現在,我嘗試使用.NET 2010將同一圖像轉換爲base64,我可以將此base64字符串轉換爲回到vb6中的圖像。這裏有什麼問題? – crimson589