2013-06-13 110 views
1

我已經實現了兩個Winform應用程序,一個應用程序用於Image to base64轉換,另一個用於base64字符串轉換爲圖像轉換。首先,我將圖像轉換爲base64字符串格式。 以上應用程序的輸出是base64字符串。 爲e.g代碼是如何將圖像轉換爲base64格式而不會丟失圖像質量?

public string ImageToBase64(Image image, System.Drawing.Imaging.ImageFormat format) 
    { 
     using (MemoryStream ms = new MemoryStream()) 
     { 
      // Convert Image to byte[] 
      image.Save(ms, format); 
      byte[] imageBytes = ms.ToArray(); 

      // Convert byte[] to Base64 String 
      string base64String = Convert.ToBase64String(imageBytes); 
      return base64String; 
     } 
    } 

以我的另一應用(BASE64到圖像轉換)我轉換的base64字符串圖像,本申請的輸出是圖像。例如對於例如 代碼是

public Image Base64ToImage(string base64String) 
    { 
     // Convert Base64 String to byte[] 
     byte[] imageBytes = Convert.FromBase64String(base64String); 
     MemoryStream ms = new MemoryStream(imageBytes, 0, imageBytes.Length); 

     // Convert byte[] to Image 
     ms.Write(imageBytes, 0, imageBytes.Length); 
     Image image = Image.FromStream(ms, true); 
     return image; 
    } 

該圖片的質量跟以前的圖片差很多,怎麼解決這個問題?

回答

4

這張圖片的質量比較差,比較以往的圖像。如何解決?

通過ImageFormat這基本上不會丟失質量。這有什麼也沒有與base64編碼部分 - 這只是一種將二進制數據轉換爲文本和回。它是無損的。

爲了證明這一點,只需將圖像保存到MemoryStream,將其倒帶,然後從流中加載 - 您將看到完全相同的質量損失。解決這個問題,當你使用base64將其編碼爲文本時,改進仍然存在。

相關問題