我试图将base64字节转换为图像.
这是我正在使用的代码:
Private Function Base64ToImage(ByVal base64 As String) As System.Drawing.Image
Dim img As System.Drawing.Image
Dim ms As MemoryStream = New MemoryStream
Dim b1 As String = base64.Replace("_", "/")
Dim b2 As String = base64.Replace("-", "+")
Dim b64 As String = b2.Replace(" ", "+")
Dim bb As String = b64.Substring(0, b64.Length - 3)
Dim b() As Byte
b = Convert.FromBase64String(b64)
ms = New System.IO.MemoryStream(b)
img = System.Drawing.Image.FromStream(ms)
Return img
End Function
Run Code Online (Sandbox Code Playgroud)
这是我得到的错误:
输入不是有效的Base-64字符串,因为它包含非基本64个字符,两个以上的填充字符或填充字符中的非法字符.
问题出在哪儿 ??
对于那些不确定为什么要进行替换的人:我假设(这是... 的母亲)该字符串包含一些base64变体.
问题可能在于:
Dim b1 As String = base64.Replace("_", "/")
Dim b2 As String = base64.Replace("-", "+")
Dim b64 As String = b2.Replace(" ", "+")
Run Code Online (Sandbox Code Playgroud)
应该阅读(可能):
Dim b1 As String = base64.Replace("_", "/")
Dim b2 As String = b1.Replace("-", "+")
Dim b64 As String = b2.Replace(" ", "+")
Run Code Online (Sandbox Code Playgroud)
请注意以上2个片段中的第二行.
除了使用3个变量(或更多)并浪费大量内存之外,除了这些替换可能是不必要的,我会这样做:
base64 = base64.Replace("_", "/").Replace("-", "+").Replace(" ", "+")
Run Code Online (Sandbox Code Playgroud)
要么
base64 = base64.Replace("_", "/")
base64 = base64.Replace("-", "+")
base64 = base64.Replace(" ", "+")
Run Code Online (Sandbox Code Playgroud)
这样可以在内存中多次保存(一个"中间解码变量")base64字符串,并且在前2个片段中更容易弄乱变量.
我也觉得奇怪,这两个-和 are replaced with +所以有可能是太某处有一个错误.
| 归档时间: |
|
| 查看次数: |
1466 次 |
| 最近记录: |