Decode base64 to image in vb.net
我一直在网上搜索,没有找到答案。你想告诉我,如何从
1 2 3 4 5 | 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 2 3 4 5 | Private Function convertbytetoimage(ByVal BA As Byte()) Dim ms As MemoryStream = New MemoryStream(BA) image = System.Drawing.Image.FromStream(ms) Return image End Function |
或者,您可以通过更改变量名来执行此操作,例如:
1 2 3 4 5 6 7 | 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 |
更新:
您可以尝试将
1 2 3 4 5 | Private Function convertbytetoimage(ByVal BA As Byte()) Dim converter As ImageConverter = New ImageConverter() _image = CType(converter.ConvertFrom(BA), Image) Return _image End Function |
更新2:
因为看起来主要的问题是
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | 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 |
请注意,在将
1 | /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== |
如果你看这个字符串的前5个字符,你会发现它等于
另一个注意事项是,我使用了一个小的
1 | PictureBox1.Image.Save(ms, System.Drawing.Imaging.ImageFormat.Png) |
如果您有其他格式,并且希望使用相同的代码,请确保更改格式。