【问题标题】:PHP GD: Bad quality on resize?PHP GD:调整大小质量差?
【发布时间】:2015-01-13 12:32:42
【问题描述】:

我不喜欢我得到的调整大小的图像,

imagecopyresized($resized_img, $new_img, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);

ImageJpeg ($resized_img,"$path_thumbs/$rand_name.$file_ext", 100);

我在 ImageJpeg 中添加了 100,因为我希望提高质量,但它并没有变得更好。

如何提高调整大小的图像/缩略图的质量

【问题讨论】:

标签: php


【解决方案1】:

尝试改用imagecopyresampled。这会进行插值,这会让事情看起来好多了。

【讨论】:

  • 还要确保在创建 $new_img 时使用 imagecreatetruecolor()
  • 如果你阅读 PHP 手册,我很确定它提到使用上述两个函数是强烈推荐的。
【解决方案2】:

从 PHP 5.5 开始,您可以使用 imagesetinterpolation 来确定图像在转换过程中的插值方式(通常是缩放和重采样,还有旋转, 等等)。

http://php.net/manual/en/function.imagesetinterpolation.php

对于图像下采样,您可能想要使用 IMG_SINC 算法,它往往会给出更清晰的结果。旋转也是如此。

对于上采样,IMG_BICUBIC_FIXED、IMG_GENERALIZED_CUBIC 和 IMG_QUADRATIC 可能会提供更好的结果。最终你必须对它们进行测试:尽快在新创建的图像资源上设置此选项,在保存 jpeg 时将其与高质量标志结合起来,使用 GD 时应该不会出现伪影。

【讨论】:

  • PHP 5.3 等过去的版本有替代方案吗?
【解决方案3】:

尝试改用imagecopyresampled

【讨论】:

    【解决方案4】:

    我为此使用timthumb。只是提供另一种选择;)

    【讨论】:

      猜你喜欢
      • 2013-02-09
      • 2021-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-22
      • 1970-01-01
      • 2012-12-05
      • 2012-11-30
      相关资源
      最近更新 更多