【问题标题】:How to Get Optimal Jpg Quality Value To Make File As Small As Possible? [closed]如何获得最佳的 Jpg 质量值以使文件尽可能小? [关闭]
【发布时间】:2013-12-05 15:57:29
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • 定义“最佳质量”。
  • 这肯定是设计/开发人员甚至商业选择吗?您需要确定什么质量水平是正确的,然后坚持您的决定。您将面临的问题是每种图形类型通常在某些类型的图形上表现更好(.gif 不像 ping 那样做渐变,而 .jpg 不支持透明度)
  • @Oli,我的问题是,如何定义最佳质量。因为每个图像都有不同的质量值以获得最佳的图像质量。
  • @Dave,我见过很多图像优化软件来获得尽可能小的图像和可接受的质量。我想知道用什么样的算法来定义最佳质量。
  • 在什么方面最优化?如果您想要最小化失真,那么您需要最大化质量,反之亦然。

标签: c# image bitmap jpeg


【解决方案1】:

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

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

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

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

不,你不能。

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

【讨论】:

  • 是的,你是对的,这个类似的算法已经写在 ImageMagick 中,但阈值是文件大小。对于小文件是可以的,但对于超过 100.000 个文件和高分辨率可能非常昂贵。也许如果我知道压缩算法中质量的含义,那将对我有所帮助。
  • 您可能应该在问题中说明您了解此算法,以及为什么它不适合您。 :-) JPEG“质量”的含义因软件而异。它不在算法中。但是您可能应该大致了解 JPEG 格式,以了解您可以调整哪些参数(色度二次采样、量化表、DCT 处理等),这些参数会影响质量。
  • 是的,也许我会使用你的算法,因为我意识到我在将文件大小调整为小得多之后保存了文件,所以速度不再是问题了。谢谢。
【解决方案2】:

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

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

【讨论】:

  • 是的,我知道文件越小质量越差。我想知道如何获得最佳值,因为我认为每张图像都有不同的质量值。例如,高细节图像必须具有高质量值以防止丢失细节。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-03-13
  • 2019-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-29
  • 1970-01-01
相关资源
最近更新 更多