C#:如何解压缩以base64编码格式接收的图像?

时间:2017-08-03 07:33:54

标签: c# image compression

首先我将大小为7KB的.bmp图像上传到服务器,然后在需要时向服务器发送请求以获取该图像,图像将以base64编码格式发送。如果我将该文件保存为.bmp格式,则保存的图像看起来与我上传的图像完全相同,但它的大小约为4KB。

我认为上传图片时正在压缩。如果是,我该如何解压缩它。

我使用以下代码保存图像:

MemoryStream stream = new MemoryStream(Convert.FromBase64String(strImageInBase64Format));
Bitmap bmp = new Bitmap(stream);
bmp.Save("some.bmp");

2 个答案:

答案 0 :(得分:1)

只需重写@Martheen在评论中发布的内容即可提供答案。

我用来保存图片的功能是:

bmp.Save("some.bmp");

从此功能的微软文档(https://msdn.microsoft.com/en-us/library/ktx83wah(v=vs.110).aspx):

  

如果图像的文件格式不存在编码器,则使用便携式网络图形(PNG)编码器。

所以,即使我一直以.bmp格式保存图像,图像实际上是以png格式编码的,然后只用.bmp扩展名保存。

要将图像从base64字符串保存为.bmp格式,我应该使用函数:

Image.Save Method (String, ImageCodecInfo, EncoderParameters)

Sample code

答案 1 :(得分:0)

首先, Base64编码格式是一个字符串,如果你想看到有意义的图片,你应该解码这个字符串。

其次,我用一个变量代表您的图像数据,这是" serverImage"所以,serverImage在服务器中显示了base64字符串。

我希望此代码可以帮助您理解解码

var bytes = Convert.FromBase64String(resizeImage.Content); 
using (var serverImage = new FileStream(filePath, FileMode.Create))
//filePath is a path for localstorage.
{
    serverImage.Write(bytes ,0, bytes.Length);

}