![](/img/trans.png)
[英]MVC Convert Base64 String to Image, but … System.FormatException
[英]FormatException when converting Base64 string to bytes
嘗試將base64字符串轉換為字節數組時出現異常。 我將圖像轉換為字節數組,然后轉換為base64字符串,然后對其進行加密並將其存儲在文件中。 然后,我嘗試將base64字符串轉換回MemoryStream中的字節數組,然后重新創建圖像。 我在這里收到FormatException:
byte[] imgBytes = Convert.FromBase64String(str);
這是兩個主要功能的完整代碼:
public string ImageToString(Image img)
{
using (MemoryStream ms = new MemoryStream())
{
img.Save(ms, ImageFormat.Jpeg);
return Convert.ToBase64String(ms.ToArray());
}
}
public Image StringToImage(String str)
{
int lent = str.Length;
byte[] imgBytes = Convert.FromBase64String(str);
MemoryStream ms = new MemoryStream(imgBytes, 0, imgBytes.Length);
ms.Write(imgBytes, 0, imgBytes.Length);
return Image.FromStream(ms, true);
}
這是我要轉換的base64字符串的開頭和結尾。... G>/9j/4AAQSkZJRgABAQEAYABgAAD .... Uh+8fxpT/B9KAP/2Q==
任何想法都將不勝感激!
問題是您的字符串沿行的某個位置損壞了。 這不是base64字符串,如第二個charcter >
,它不是在base64字符串中出現的。
旁注:函數將創建一個包含數據的存儲流,然后將數據再次寫入該存儲流。 然后,您嘗試從內存流中讀取而不將位置重置為流的開頭。
只需創建內存流並從中讀取:
public Image StringToImage(String str) {
byte[] imgBytes = Convert.FromBase64String(str);
return Image.FromStream(new MemoryStream(imgBytes), true);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.