【问题标题】:Preserving Image quality保持图像质量
【发布时间】:2013-11-23 20:02:42
【问题描述】:

我有一个 winform C# 桌面应用程序。

我有源源不断的 jpeg 流入。 我正在将当前图像与前一个图像进行比较。 通过使用第 3 方工具 - Emgu - 我可以创建一个仅包含差异的新图像。

然后我将该图像转换为内存流,然后转换为字节数组。

在接收应用程序中,我获取这个字节数组并使用这些字节通过内存流加载图像。

问题是图像质量下降很多。

如果我在将图像转换为客户端的内存流之前将其保存到硬盘驱动器,则图像的质量很好。

问题在于当我将它作为内存流加载时。

我将其编码为 jpeg。
如果我在发送到服务器之前将其编码为 PNG,则质量再次良好。 将字节数组中的大小编码为 PNG 的问题会激增。

我的目的一直是减少我必须上传的字节数以提高响应时间。

我做错了什么还是不能这样做?

这是我的代码:

Bitmap imgContainingDifference
    = GetDiffFromEmgu(CurrentJpegImage, PreviousJpegImage);

using (System.IO.MemoryStream msIn = new System.IO.MemoryStream())
{
  holding.Save(msIn, System.Drawing.Imaging.ImageFormat.Jpeg);
  data = msIn.ToArray();
}

//test here
using (System.IO.MemoryStream msOut = new System.IO.MemoryStream(_data))
{
   Bitmap testIMG = (Bitmap)Image.FromStream(msOut);
}

//result is image is poor/degrades

如果我这样做:

using (System.IO.MemoryStream msIn = new System.IO.MemoryStream())
{
  holding.Save(msIn, System.Drawing.Imaging.ImageFormat.Png);
  data = msIn.ToArray();
}

using (System.IO.MemoryStream msOut = new System.IO.MemoryStream(_data))
{
   Bitmap testIMG = (Bitmap)Image.FromStream(msOut);
}

//Image is good BUT the size of the byte array is 
//10 times the size of the CurrentFrame right at the start.

这是使用来自以下的孩子建议时的图像:

我现在尝试使用来自@MagnatLU 的善意建议的编码器,如果我使用 FreeImage.Net,我也可以获得相同质量的图像。

【问题讨论】:

  • 你要求你的蛋糕也吃。如果使用 Jpeg 等有损压缩,图像质量会下降。如果您使用无损压缩(例如 PNG),图像质量将保持不变,但尺寸预计会增加。你不能同时拥有它。
  • 您好,感谢您的反馈。问题是原始图像是jpeg。我只是比较两个图像之间的差异,以相同的格式(jpeg)再次保存它,然后重建当前帧(作为 jpeg)并过度施加像素变化。除了 jpeg 之外,我从来没有在任何时候进行加载、比较和保存。据观察,当以 PNG 格式保存内存流中的更改时,质量还可以。我现在所能想到的是,这个进行比较的第 3 方工具实际上是在 png 中加载图像来进行比较。
  • 初始图像也是 Jpeg 并不重要。如果您在 photoshop 中加载 jpeg 并将其保存回 jpeg,则结果的质量将低于原始质量。每次压缩迭代都会进一步降低质量,就像你制作了一个施乐的一个施乐的施乐。
  • 你好。我懂了。多么痛苦啊:(

标签: c# image-processing


【解决方案1】:

您可以在将文件编码为质量和大小之间最佳经验折衷的值时设置JPEG compression level

【讨论】:

  • 您好,感谢您的回复。我试过了,虽然质量有所提高,但不幸的是它仍然太差,无法使用。
猜你喜欢
  • 2012-07-27
  • 1970-01-01
  • 2015-02-17
  • 1970-01-01
  • 1970-01-01
  • 2020-02-19
  • 2019-12-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多