2013-06-13 545 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将其编码为文本时,改进仍然存在。

相关问题