【问题标题】:ImageMagick jpeg quality extremely lowImageMagick jpeg 质量极低
【发布时间】:2015-07-09 00:42:59
【问题描述】:

我有以下图片188_f.jpg

还有如下代码:

<?php
    $ss = "convert 188_f.jpg -quality 95% -set colorspace RGB -colorspace CMYK 188_f_cmyk.jpg 2>&1";
    echo ">" . $ss . "<br />";
    echo system($ss);
?>

当我运行这段代码时,我得到这个图像作为输出:

这确实是 CMYK 格式,但是当以 100% 观看时,质量会显着下降。 (不知道SE在上传的时候有没有做任何转换,所以我通过FTP上传了上面的图片,所以如果需要的话你可以直接检查它们。)

我尝试移动质量参数,带和不带百分号,我还查看了 Imagick 指南,但我找不到任何解释质量下降的原因。输出文件具有相同的像素数。

编辑:除了更改色彩空间选项外,不对脚本进行其他更改,结果如下:

编辑 2: 还尝试了多个不同的配置文件,使用这个:

convert 188_f.jpg -quality 95% -profile profiles\\UncoatedFOGRA29.icc -colorspace CMYK 188_f_cmyk.jpg 2>&

他们都没有摆脱像素化。

【问题讨论】:

  • 删除色彩空间选项后会发生什么?
  • @CBroe 好问题。编辑了我的帖子。
  • imagemagick.org/script/command-line-options.php#colorspace: “要更准确地与线性 RGB、CMYK 或灰度色彩空间进行颜色转换,请使用 -profile 选项。” – 看看是否这可以提供帮助。 (不要问我要尝试什么个人资料名称,我没有这方面的经验。)
  • @CBroe 我尝试了多种不同的配置文件,它们确实稍微改变了颜色,但它仍然是像素化的。
  • 你想要完成什么?我还指出,在重新压缩 JPEG 时,您应该使用可能的最佳质量设置(100%?),希望使用量化表中的所有 1。

标签: imagemagick jpeg imagemagick-convert


【解决方案1】:

通过将以下选项传递给convertmogrify,我设法获得了与您的原始图像无法区分的输出:

-filter Triangle -define filter:support=2 -unsharp 0.25x0.25+8+0.065 -dither None -posterize 136 -quality 82 -define jpeg:fancy-upsampling=off -interlace none -colorspace sRGB -strip

(参考:https://www.smashingmagazine.com/2015/06/efficient-image-resizing-with-imagemagick/

(左:原始 - 74.8kB,右:转换后 - 63kB)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-06
    • 2013-03-24
    相关资源
    最近更新 更多