我正在使用ImageMagick通过减少图像中的颜色以编程方式减小PNG图像的大小。我得到图像唯一颜色并将其除以2.然后我将此值分配给-colors选项,如下所示:
variable = unique-colors / 2
convert image.png -colors variable -depth 8
我认为这会大大减小图像的大小,但会增加磁盘上的图像大小。任何人都可以对此有所了解。
感谢。
编辑:结果问题是抖动。抖动有助于减少彩色图像看起来更像原件,但会增加图像尺寸。要删除ImageMagick中的抖动,请在命令中添加+抖动。 实施例
转换CandyBar.png + dither -colors 300 -dethth 8 smallerCandyBar.png
答案 0 :(得分:3)
Imagemagick可能会使用一些抖动算法来使图像显示为具有原始数量的颜色。这增加了图像数据“随机性”(单个像素在某些地方重新着色以混合成其他颜色),并且该图像数据也不再包装。进一步研究convert
命令如何进行抖动。您还可以通过在gimp / equivalent程序中添加第二个图像作为图层并调整透明度来查看此效果。
答案 1 :(得分:1)
您应该使用pngquant。
您无需猜测颜色数量,它具有实际的--quality
设置:
pngquant --verbose --quality=70 image.png
以上将自动选择与JPEG质量相同的比例匹配给定质量所需的颜色数量(100 =完美,70 = OK,20 =糟糕)。
pngquant
具有明显更好的量化算法,量化越好,质量/文件大小越好。
并且pngquant
不抖动没有抖动的区域,这可以避免在文件中添加不必要的噪音/随机性。
答案 2 :(得分:0)
“新”PNG的压缩效果不如原始压缩效果好。