簡體   English   中英

將Base64字符串轉換為字節時出現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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM