【问题标题】:Downscaling image file size using imageMagick使用 imageMagick 缩小图像文件大小
【发布时间】:2017-10-14 00:11:47
【问题描述】:

我正在尝试找出一个 imagemagick 操作,通过降低图像质量来减小图像文件大小。

此操作有效

convert -fuzz 1% -trim -quality 90 -limit memory 32MiB  original.jpg  converted.jpg

降低品质因数会降低 imageSize。有没有其他方法可以达到同样的效果并添加 MAX_SIZE 的限制。

例如 5Mb 的图像应该缩小到 2Mb

【问题讨论】:

  • 出于兴趣,您应该整理一下您的命令顺序。在大多数情况下,它是“转换输入选项输出”。在 V6 中,您通常可以避免错误的顺序,但 V7 更严格。如果/当您升级到 V7 时,这可以为您节省一些困惑。
  • @Bonzo 谢谢,我会记住的

标签: image image-processing imagemagick imagemagick-convert


【解决方案1】:

您将使用-define jpeg:extent=...

这是一个包含随机数据的大图像的示例,需要非常大的文件大小才能以任何合理的质量准确地表示它。

convert -size 10000x1000 xc:gray +noise random -define jpeg:extent=2MB out.jpg

结果

-rw-r--r--    1 mark  staff  1844050 15 May 10:44 out.jpg

并检查使用的质量:

identify -format "%Q" out.jpg 
21

另一个例子:

convert -size 10000x1000 xc:gray +noise random -define jpeg:extent=400kb out.jpg

结果

-rw-r--r--    1 mark  staff   377757 15 May 10:44 out.jpg

并检查使用的质量:

identify -format "%Q" out.jpg 
5

如果你想用 Python 做类似的事情,我写了一个很好的答案here。它对满足最大尺寸要求的 JPEG 质量进行二分搜索。

【讨论】:

    【解决方案2】:

    除了质量之外,一个重要的因素是色度二次采样。默认情况下,IM 使用“减半色度”,但您可以使用“四等分色度”。详情请见this question

    检查 IM 转换中的jpeg:extent option

    您也可以使用Google's Guetzli。据我了解,它尝试了各种 JPEG 编码选项来减小文件大小,同时检查结果的视觉可接受性。

    【讨论】:

    • 请注意,正确的 IM 6 语法在应用设置和运算符之前读取光栅图像。因此,在转换命令之后立即读取您的输入。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-18
    • 2012-11-08
    • 1970-01-01
    • 2020-01-27
    • 2017-02-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多