ImageMagick创建了一些非常大的PNG. GraphicsMagick好多了,但是我仍然在寻找最好的选择,使用convert来获取最小的文件大小.我在这里有一个large png with a small filesize,并通过IM转换,我一直无法达到文件大小,更不用说更小.使用GM转换,我可以得到它稍小,但我正在寻找改进,一般来说,我遇到的任何图像.

gm convert -quality 95 a_png.png gm.png
convert -quality 95 -depth 8 a_png.png im.png
gm identify *

a_png.png PNG 2560x2048+0+0 PseudoClass 256c 8-bit 60.1K 0.000u 0:01
gm.png[1] PNG 2560x2048+0+0 PseudoClass 256c 8-bit 60.0K 0.000u 0:01
im.png[2] PNG 2560x2048+0+0 DirectClass 8-bit 130.2K 0.000u 0:01

用于转换的哪些选项产生最小的PNG文件大小?

(是的,我很熟悉OptiPNG,PNGOUT和Pngcrush,但是在我碰巧在每个* nix框上我都可以毫无疑问地提供一些东西.)

看起来你和我正在寻找同样的答案.不幸的是,似乎没有很多人有很好的知识GraphicsMagick.这是我迄今为止所学到的,质量运算符不适用于JPEG以外的任何图像.对于我来说,只是在PNG和GIF上使用文件大小更大.

我已经做到这一点我的PNG和GIF文件减少他们的大小:

gm convert myImage.png +dither -depth 8 -colors 50 myImage.png

>当颜色减少时,抖动可以停止图像的任何抖动. (这减少了文件大小)
> -depth 8可能是不必要的,因为大多数PNG文件已经是深度8.
> – 颜色50将图像中的颜色数量减少到50,这是真正减少以无损格式(如PNG或GIF)存储的图像的大小的唯一方法.

显然,为了获得最佳的图像质量/尺寸比例,您不能仅仅减少图像深度或颜色数量,而不需要知道当前的深度和颜色数量.为了确定这个信息我正在做如下

gm identify -format "file_size:%b,unique_colors:%k,bit_depth:%q" myImage.png

对于我的形象这返回

file_size:100.7k,unique_colors:13455,bit_depth:8

问题是当GraphicsMagick将颜色总是减少至少为255时,因此您不能将颜色数设置为300.此外,PNG文件的Alpha通道似乎也有问题;如果图像具有透明度,减少颜色将以透明替代这些颜色;与imagemagick它不会这样做.

原文 http://www.voidcn.com/article/p-pijxclpk-btw.html