【问题标题】:A GD::imagejpeg() better alternative?一个 GD::imagejpeg() 更好的选择?
【发布时间】:2011-07-05 22:46:34
【问题描述】:

有没有比 GD 库 imagejpeg 更好的功能?

我遇到了一些质量问题(即使使用 85 作为质量参数)

我需要上传一张图片(可以是 png、jpg、gif 等等)使用此函数将它们转换为 jpg,然后将它们上传到我的网站(在这种情况下是一个 db,但这不是问题)

目前使用imagecreatefromstring,然后使用imagejpeg,质量很差,有时尺寸会变大。

这个糟糕的 gd 的任何 php 替代品(你已经测试过..)?

谢谢

【问题讨论】:

  • 你是如何创建你的图像的。你能给我们发一些代码吗?
  • 我不是在创建我正在上传它,然后将它传递给 imagecreatestring.. normalstuff
  • 你能展示一个示例图像吗?

标签: php image


【解决方案1】:

我个人更喜欢 ImageMagick 而不是 GD。它做得更多而且做得更快:http://ca2.php.net/imagick - 它确实需要安装 ImageMagick,但如果你问我,它是值得的。

【讨论】:

    【解决方案2】:

    您是否启用了隔行扫描? http://www.php.net/manual/en/function.imageinterlace.php 您可能还想在保存之前考虑重新采样图像。

    如果您决定离开 GD,可以查看 imagemagick PECL 扩展 (http://php.net/manual/en/book.imagick.php)。比 GD 麻烦一点,因为它不是 php 内置的,但可能是你要找的。​​p>

    【讨论】:

    • 隔行扫描与 imagejpeg() 的质量无关;我认为既不重新采样
    【解决方案3】:

    GD 的 JPG 过滤器在压缩和图像质量方面确实不是最好的。

    对于细节非常精细的照片,请考虑使用极高品质的设置,例如 95 甚至 99。

    另外,正如@v0idnull 所建议的那样,ImageMagick 值得一试。

    请记住,有些图像在 JPG 中看起来永远不会好看 - 例如,矢量插图。 JPG 最适合用于颜色变化多且颜色完全相同的区域很少的照片和其他图像。

    【讨论】:

    • 我不能使用超过 80-85 作为质量,因为图像尺寸会比原始来源大。无论如何,例如使用 Photoshop,我可以将我想要的任何内容保存在 jpg 中,质量为8-9,质量完美。为什么GD也不会发生这种情况:(
    • @yes Photoshop 的压缩算法比 GD 的要好。恐怕没有办法使用 Photoshop 的
    猜你喜欢
    • 2011-09-27
    • 1970-01-01
    • 1970-01-01
    • 2012-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-14
    相关资源
    最近更新 更多