如何获得最佳的Jpg质量值以使文件尽可能小?

时间:2013-12-05 15:57:29

标签: c# image bitmap jpeg

我想在C#中为网站批量调整数千个jpg图像应用程序 为了高质量调整大小,我在其他问题上找到了答案 但我希望结果文件大小尽可能小,而不会显着降低质量

EncoderParameter qualityParam = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, quality);

如何在Bitmap类中确定或计算jpg的最佳质量值?

============
编辑1:
也许像smush.it,pngout,pngcrush等软件就是例子。我想知道他们如何定义最佳质量。

============
编辑2:
像Oli和haraldK:可能是我更清楚的问题是:
如何根据标准偏差定义质量值?
例如,如果颜色为0到255,则我的阈值偏差为25.

2 个答案:

答案 0 :(得分:2)

理论上,您应该能够以高质量设置开始写出图像,然后在较低质量设置下再次连续写出图像,直到达到“可接受”阈值以下。保持最低质量的阈值(这个“算法”可以优化,类似于二分搜索)。

要自动测试“质量”,您可以计算压缩图像与原始图像之间像素值的百分比差异,并将其与阈值进行比较。必须通过反复试验找到阈值。

不幸的是,在许多情况下,人眼不会同意这种算法,因为总会有部分图像引起注意并且更重要,某些颜色的差异比其他颜色更重要等等。图像“质量”是一个非常主观的东西。

所以,我半同意@ Olivier的回答:

  不,你不能。

但请继续尝试。要有创意,也许你找到适合自己的东西。 : - )

答案 1 :(得分:0)

不,你不能。压缩系数越高,图像质量越差,反之亦然。选择参数始终是一种妥协,仅取决于您对结果的主观判断。

测试不同的设置并选择您喜欢的设置。