将base64解码为vb.net中的图像

时间:2018-03-27 07:51:34

标签: arrays vb.net image memorystream linegraph

我一直在互联网上搜索,但没有找到答案。您想告诉我,如何从base64解码为Image如线图?我一直在尝试先从base64转换为Byte数组,然后从Byte数组转换为Image

Private Function convertbytetoimage(ByVal BA As Byte())
     Dim ms As MemoryStream = New MemoryStream(BA)
     image = Image.FromStream(ms) 'I always get wrong in this line.
     Return image
 End Function

1 个答案:

答案 0 :(得分:1)

查看代码,您的问题可能是使用变量名image而不是_image

请注意,VBnot case sensitive,如C#和其他编程语言。

在您的代码中,我假设您将image变量定义为Image

要使用静态Image.FromStream(ms),您需要使用完全限定名称Image或更改变量名称。

以下是修改代码的方法:

Private Function convertbytetoimage(ByVal BA As Byte())
    Dim ms As MemoryStream = New MemoryStream(BA)
    image = System.Drawing.Image.FromStream(ms)
    Return image
End Function

或者您可以通过更改变量名来执行此操作,例如:

Dim _image as Image

Private Function convertbytetoimage(ByVal BA As Byte())
    Dim ms As MemoryStream = New MemoryStream(BA)
    _image = Image.FromStream(ms)
    Return _image
End Function

更新

您也可以尝试使用ImageConvertorByte数组转换为Image

Private Function convertbytetoimage(ByVal BA As Byte())
    Dim converter As ImageConverter = New ImageConverter()
    _image = CType(converter.ConvertFrom(BA), Image)
    Return _image
End Function

更新2:

因为看起来主要问题是base64字符串。请查看我的小型演示,将ImagePictureBox转换为base64字符串,然后转换为Byte数组,最后返回{ {1}}。

Image

请注意,在将Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click Dim base64String = ConvertImageToBase64String() 'Using Functions To Make the code tidier Dim byteArray = ConvertBase64ToByteArray(base64String) 'Using Functions To Make the code tidier Dim image = convertbytetoimage(byteArray) 'Using Functions To Make the code tidier PictureBox2.Image = image 'since we're using a small windows form app, we'll set back the image to a second picture box. End Sub Public Function ConvertImageToBase64String() As String Using ms As New MemoryStream() PictureBox1.Image.Save(ms, System.Drawing.Imaging.ImageFormat.Png) 'We load the image from first PictureBox in the MemoryStream Dim obyte = ms.ToArray() 'We tranform it to byte array.. Return Convert.ToBase64String(obyte) 'We then convert the byte array to base 64 string. End Using End Function Public Function ConvertBase64ToByteArray(base64 As String) As Byte() Return Convert.FromBase64String(base64) 'Convert the base64 back to byte array. End Function 'Here's the part of your code (which works) Private Function convertbytetoimage(ByVal BA As Byte()) Dim ms As MemoryStream = New MemoryStream(BA) Dim image = System.Drawing.Image.FromStream(ms) Return image End Function 转换为Image字符串后,它看起来像那样(请记住每个图像都不同,因此您不会得到相同的字符串):

base64

如果查看字符串的前5个字符,您会发现它等于/9j/4AAQSkZJRgABAQEAYABgAAD/4QBaRXhpZgAATU0AKgAAAAgABQMBAAUAAAABAAAASgMDAAEAAAABAAAAAFEQAAEAAAABAQAAAFERAAQAAAABAAAAAFESAAQAAAABAAAAAAAAAAAAAYagAACxj//bAEMACAYGBwYFCAcHBwkJCAoMFA0MCwsMGRITDxQdGh8eHRocHCAkLicgIiwjHBwoNyksMDE0NDQfJzk9ODI8LjM0Mv/bAEMBCQkJDAsMGA0NGDIhHCEyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMv/AABEIADAAMAMBIgACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgv/xAC1EAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4+fr/xAAfAQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgv/xAC1EQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/APDdH01tY1a3sElWIzMQZGBIUAEk4HXgGvfvC/hPTbDSIzZabLcjnMyxoC54zlzgtyo46A5xjNeC6BfR6brtpdTcRI+HPPyhgVJ45OM5x7V9kaFYpYeH7W1keNpIU2O0ZypIPOD6ZrhxSlKXLfSx14eUYx5utzy3U7C7uL1bZLZoI26tIm3Ht715/wCNdK0p45JbRf3yIWaXHJKjv7YGOc4r6C1qIS2VxGOrIQPrjivn7xNbSWVtdW8wAkEbE4Of4a4sPN+0sddVKVO7R5tRRRXtnkhX1d4N8V2+seGrOcTw+e8CSTRxlvkY5VuG5ALq+O3HFfPngHwmPFeueTMSLWHDSY/jJPC5HIyAxz/s4yCQa+iItJtdIt7a0tYIVjV0QIiBV5YA8DA5yT9ea5cVQdWK5XZo3oVVTeuzDV9XRYHKsMAcmvn/AMdXV214wIJhm+ZpMdDk4X26Z96+i/EHhm2htWubpgiL8scaMcu3+FedalotjOhSVM57nkfjXJgcLOMnUqHTisRBwUIHg1FdR4n8LNpcbXttG32VZBFIAGIjYgleffaep7H8OXr1Tzz2D4OExWU829wBO42hztJ2pyR0JHY9sn1NesQT/atTsoyes6E/gc/0r5p8LeK5/DlwAQ8lqzF2SMqrbtuM5IOR0JHGdo5Fer6N4+0rUfLKXSw3G0nY3BB289fQE8+xoA7zxPq/9pagyo3+jw5VPf1NcXqMw55qefUoSnySKR6g1z9/fKc/OPzoA5vx0TJpgYOw5UkA/e7YP8/wrzuuz8VajDcWQgEqhwBwTyef/rVxlAH/2Q== ,这意味着此字符串表示的文件是/9j/4文件,您可以查看{{3查看如何验证 PNG字符串。

另一个注意事项,我使用了一个小base64图像,因此我使用了下一种格式:

PNG

如果您有其他格式并且想要使用相同的代码,请务必更改格式。