让我们说我通过以下行将照片转换为字节数组:
Dim Bytes() As Byte
Bytes = IO.File.ReadAllBytes("C:\DT.jpg")
现在,Bytes()可以转换为文本并通过代码
显示在文本框中TextBox1.Text = System.Convert.ToBase64String(Bytes)
以上行将打印如下内容: 9j / 4AAQSkZJRgABAQEAYABgAAD // gA7Q1JFQVRPUjogZ2QtanBlZyB2MS4wICh1c2luZyBJSkcgSlBFRyB2ODAp ... etc。
但 使用像
这样的功能时TextBox1.Text = System.Text.Encoding.ASCII.GetString(Bytes) 结果就是:???? (四个问号)
我在附近工作并制作了一个循环
For i As Integer = 0 To Bytes.Length - 1
TextBox1.Text = TextBox1.Text & Chr(bytes(I))
Next
并且textbox1显示如下:#3RðbrÑ$4á%ñ&'()* 56789 ..等 这正是bytes()中每个字节的ASCII表示。
我的问题是: 为什么它无法使用命名空间System.Text.Encoding下的函数返回Bytes的ASCII,UTF8,UTF7,ANSI等表示。 ?无论如何,不是通过使用循环获得表示?
答案 0 :(得分:0)
尝试这样的事情:
Public Function ImageToBase64(image As Image, format As System.Drawing.Imaging.ImageFormat) As String
Using ms As New MemoryStream()
' Convert Image to byte[]
image.Save(ms, format)
Dim imageBytes As Byte() = ms.ToArray()
' Convert byte[] to Base64 String
Dim base64String As String = Convert.ToBase64String(imageBytes)
Return base64String
End Using
End Function
和
Public Function Base64ToImage(base64String As String) As Image
' Convert Base64 String to byte[]
Dim imageBytes As Byte() = Convert.FromBase64String(base64String)
Dim ms As New MemoryStream(imageBytes, 0, imageBytes.Length)
' Convert byte[] to Image
ms.Write(imageBytes, 0, imageBytes.Length)
Dim image__1 As Image = Image.FromStream(ms, True)
Return image__1
End Function
代码从此处被盗并转换为vb.net
http://www.dailycoding.com/posts/convert_image_to_base64_string_and_base64_string_to_image.aspx