ImageMagick调整大小和质量PNG

31

在我的应用程序中,我需要调整PNG文件的大小并使其质量降低。

原始大小为3100x4400像素,占用2.20MB磁盘空间。

运行以下命令时:

convert -resize 1400 -quality 10 input.png output.png

这些图像已经被调整为1400x2000大小,占用了5.33MB的磁盘空间。

我的问题是:如何减小文件大小?


您可以调整大小,直到文件大小足够小。您可以限制颜色数量并保存为调色板8位颜色。(请参见https://www.imagemagick.org/script/command-line-options.php#colors和https://www.imagemagick.org/Usage/formats/#png_formats)。您可以对颜色进行分色处理。您可以使用不同的压缩类型/值(请参见https://www.imagemagick.org/script/command-line-options.php#quality),但这可能不会有太大的区别。 - fmw42
5个回答

20
  1. 你可以使用色调分离进一步降低PNG的质量:

    https://github.com/pornel/mediancut-posterizerMac GUI

    这是一项有损操作,可以让zlib更好地进行压缩。

  2. 使用pngquant将图像转换为PNG8格式。

    它将图像减少到256种颜色,因此质量取决于图像类型,但pngquant可以制作非常好的调色板,所以您可能会惊讶它经常有效。

  3. 如果你有多余的CPU时间,建议使用Zopfli-png或者AdvPNG重新压缩图像。

    这是无损的,对于所有的图片都是推荐使用的。


1
你也可以使用 convert source.png png8:dest.png 将其转换为PNG8格式。 - paulodiovani
ImageMagick的转换器相当糟糕,不支持透明度:http://www.imagemagick.org/discourse-server/viewtopic.php?t=23340 - Kornel
有没有办法生成特定文件大小限制的PNG,就像JPG一样使用“-define jpeg:extent=70KB”? - Subha
不,PNG通常不适合用于压缩到特定文件大小,所以你唯一能做的就是使用不同的设置进行多次压缩,并选择最接近你想要的大小的结果之一。但是,将图像压缩到固定文件大小大多数情况下都是一个非常糟糕的想法,因为它会在复杂文件上给你太丑陋的质量,并浪费简单图像的空间。 - Kornel

13

使用 imagemagick 调整图片大小后,您可以使用 pngquant 压缩图像。

在 Mac 上(使用 homebrew),安装 brew install pngquant 后执行以下操作:

pngquant <filename.png>

这将创建一个名为filename-fs8.png的新图像,其大小通常要小得多。


5

帮助页面上写道,使用PNG格式时,-quality选项设置zlib的压缩级别,其中0是最差的压缩,100是最好的(默认为75)。因此尝试将-quality设置为100甚至删除该选项。

另一种方法是指定PNG:compression-level=NPNG:compression-strategy=NPNG:compression-filter=N以获得更好的结果。

http://www.imagemagick.org/script/command-line-options.php#quality


4

对于希望粘贴一个一行代码的懒人:

mogrify -resize 50% -quality 50 *.png && pngquant *.png --ext .png --force 

这将直接修改当前目录中所有的png文件,因此确保您有备份。按照您的需求修改调整大小和质量参数。我进行了快速实验,先使用mogrify,然后再使用pngquant,可以显著减小图像大小。

Ubuntu的pngquant软件包名为"pngquant",但我在20.04LTS上已经安装了它,因此似乎默认情况下就已经存在。


太好了。在Mac机器上也像魔法一样运行良好。我只是使用了更高的质量,因为50%太多了。无论如何,任何人都可以自由地使用他们自己的。 - Xentatt

-4
我发现最好的方法是使用

标签。

- density [value] 

参数。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接