【问题标题】:Determine proper image quality for file size?确定适合文件大小的图像质量?
【发布时间】:2012-07-19 23:03:47
【问题描述】:

我目前正在将上传的图像重新采样为静态宽度和高度。我希望能够以低于某个文件大小阈值的最高质量创建图像的新副本。目前,我正在使用一种非常幼稚的方法 - 像这样:

$size = NULL;
$quality = 100;

while ($size === NULL || $size > MAX_SIZE) {
    // write the image to disk using $quality

    clearstatcache(TRUE, $image);
    $size = filesize($image);

    $quality -= 10;
}

有没有更好的方法来确定我应该使用什么质量?

【问题讨论】:

标签: php image gd


【解决方案1】:

生成的文件大小不仅取决于质量参数,还取决于图像本身。通常,无法准确预测文件大小。

您可以对您的典型图像进行一系列测量并创建一些比例,以便您更快地猜出准确的质量参数。

您也可以进行二分搜索,在经过一些迭代后,它会收敛到足够好的点。

【讨论】:

  • 我考虑过二分搜索,但由于质量设置导致文件大小呈指数下降,我认为它的迭代次数可能多于线性搜索。例如,从 100 质量到 90 几乎是平均文件大小的一半。因此,在大多数情况下,线性搜索的 2 次迭代就足够了,而二分搜索需要 3-4 次才能得出相同的结论。不过,我最终可能会尝试仅从一些随机抽样中确定一个近似比例。
  • 好吧,在这个迭代次数下,它并没有太大的影响。
  • 对于标准搜索,我会 100% 同意。我想我之所以担心这种情况,是因为我每次迭代都在进行文件 I/O(当时我正在考虑将质量每次降低 1 而不是 10,但我已经放弃了)。我想这唯一正确的答案。
猜你喜欢
  • 1970-01-01
  • 2011-10-22
  • 2011-04-19
  • 1970-01-01
  • 2014-02-17
  • 2021-02-15
  • 2011-01-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多