来自MemoryStream的JPEG解压缩c#

时间:2014-09-22 13:49:40

标签: c# bitmap jpeg compression

在我的程序中,我将BMP压缩成这样的JPEG:

private void ConvertBmpToStreamJPG30(Bitmap b, Stream s)
{
  s.Flush();
  EncoderParameters encoderParameters = new EncoderParameters(1);
  encoderParameters.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 30L);
  b.Save(s, GetEncoder(ImageFormat.Jpeg), encoderParameters);
}

然后一个函数在MemoryStream中接收JPEG,我通过

将其转换为Bitmap
Bitmap b = new Bitmap(stream);

当我显示图像时,有很多这样的行:

Screenshot

我做错了什么,人?

修改1 这是一个小型视觉工作室解决方案,显示问题:http://www.fast-files.com/getfile.aspx?file=79311

这是屏幕共享软件的开始。它的作用:它截取屏幕截图,比较它们,压缩差异并将其发送到解压缩程序的另一部分,然后用收到的所有内容重新组合图像。它打开一个窗口,显示发送的内容"在左边和重新组合的图像在右边。

1 个答案:

答案 0 :(得分:0)

我想到了三件事:

  1. 尝试设置比30更好的质量,看看是否有帮助;
  2. 检查你的RAM(可能还有视频RAM,虽然我怀疑GDI +可能会使用VGA进行压缩)来解决硬件问题;
  3. 我有similar weird problem我加载了一些JPEG文件,稍微修改了一下,然后再次保存。这产生了一个例外。解决方案是基于旧位图创建一个新位图并保存副本。试试吧。