当使用ImageMagick保存到无损PNG时,我希望达到最大的压缩量。我正在对许多PSD进行批量转换。
我尝试了一些东西,但在我看来,得到的PNG图像并不像原来的图像那么清晰,虽然我的妻子看不到它。
这些是我正在使用的当前论点:
convert -depth 24 -define png:compression-filter=1 \
-define png:compression-level=9 -define png:compression-strategy=2
根据:http://www.imagemagick.org/script/command-line-options.php#define
和http://www.w3.org/TR/PNG-Filters.html
这意味着:
根据文档:“有效值为0到4,意味着默认、过滤、huffman_only、rle和固定的zlib压缩策略。如果您使用的是不支持Z_RLE (1.2.0之前)或Z_FIXED (1.2.2.2之前)的旧ZLIB,则值3和4将分别使用zlib默认策略。”
顺便说一下,我的图像是960x720像素。
(如果使用默认压缩策略0,则会得到大文件。可能是9的压缩过滤器和0的压缩策略正在产生更小的图像,但我仍然不确定它是否是无损的)。
问题:
发布于 2014-12-03 10:40:01
在压缩PNG时,我不会只依赖ImageMagick (除非有某种原因超出了您自己的控制范围,迫使您使用ImageMagick)。
要将ImageMagick的结果与之进行比较,一个很好的选择是压碎,或者它的较新的继承者optipng。
与ImageMagick相比,这两种方法在优化和压缩方面都取得了更好的效果。通常,他们也比IM慢,因为他们可以蛮力不同的方法,然后保持最小的结果。
话虽如此,现在ImageMagick.
用convert
定义PNG质量的标准方法是使用-quality {level}{filter}
参数。
不过,您使用通过使用-define png:...
控件组合获得的更细粒度的控件是正确的。
用于PNG的-quality
与JPEG的质量设置非常不同(后者只是从0
到100
的整数)。
对于PNG来说,它是由两个个位数组成的:
0
到9
。
(然而,0
的设置有一个特殊的含义:当您使用它时,您将得到Huffman压缩,而不是zlib压缩级别0。这往往更好..。奇怪但却是真的。- 0 means none,
- 1 means "sub",
- 2 means "up",
- 3 means "average",
- 4 means "Paeth", and
- 5 means "adaptive".
在实际中的结果是:
-quality 00
)压缩通常是最合适的。-quality 05
)通常是最好的。若要将其转换为命令行语法,请尝试以下设置:
-define png:compression-level=0 \
-define png:compression-filter=5 \
-define png:compression-strategy=2
最后,如果我真的想比较压缩后图像的不同(但接近)清晰度,我经常使用frequently的出色的flicker_cmp脚本。
让你妻子来测试..。:-)
P.S.:这里是关于PNG压缩技术的一个很好的指南。
https://stackoverflow.com/questions/27267073
复制相似问题