繁体   English   中英

从MemoryStream c#进行JPEG解压缩

[英]JPEG decompression from MemoryStream c#

在我的程序中,我将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 b = new Bitmap(stream);

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

屏幕截图

我在做什么错,人?

编辑1这里是一个显示问题的小型Visual Studio解决方案: http : //www.fast-files.com/getfile.aspx?file=79311

这是屏幕共享软件的开始。 它的作用:获取屏幕截图,对其进行比较,压缩差异并将其发送到程序的另一部分,然后对该文件进行解压缩并使用接收到的所有内容重新构成图像。 它会打开一个窗口,在左侧显示“已发送”的内容,在右侧显示已重组的图像。

我想到三件事:

  1. 尝试将质量设置为30以上,看看是否有帮助;
  2. 检查您的RAM(可能还有视频RAM,尽管我怀疑GDI +可能使用VGA进行压缩)是否存在硬件问题;
  3. 我有一个类似的怪异问题 ,我加载了一些JPEG文件,对其进行了一点修改,然后再次保存。 那产生了一个例外。 解决方案是在旧的位图的基础上制作一个新的位图并保存副本。 试试看

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM