imagemagick调整大小和质量PNG

时间:2011-10-27 08:28:04

标签: image image-processing png imagemagick

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

在完整尺寸下,PNG为3100x4400px,使用2,20MB磁盘空间。

运行以下命令时:

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

使用5,33MB磁盘空间将图像调整为1400x2000。

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

4 个答案:

答案 0 :(得分:11)

  1. 您可以使用海报来进一步降低PNG的质量:

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

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

  2. 使用pngquant将图片转换为PNG8。

    它将图像缩小为256色,因此质量取决于图像的类型,但是pngquant可以制作非常好的调色板,因此您可能会对它的工作频率感到惊讶。

  3. 使用Zopfli-pngAdvPNG更好地重新压缩图像。

    如果您有剩余的CPU周期,这对于所有图像都是无损的。

答案 1 :(得分:4)

帮助页面说明,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

答案 2 :(得分:1)

使用 int[] result = new int[ar1.length + ar2.length]; for(int i = 0; i < result.length; i++) { result[i] = i < ar1.length ? ar1[i] : ar2[i - ar1.length]; // comparison } 调整大小后,可以使用pngquant压缩图像。

在Mac上(使用自制软件) int[] result = new int[ar1.length + ar2.length]; for(int i = 0; i < ar1.length; i++) { result[i] = ar1[i]; // no result[ar1.length + i] = ar2[i]; // comparison } ,然后:

imagemagick

这将创建一个通常尺寸要小得多的新图像brew install pngquant

答案 3 :(得分:-3)

我发现最好的方法是使用

- density [value] 

参数。