1

我正在使用 ImageMagick 通过减少图像中的颜色以编程方式减小 PNG 图像的大小。我得到图像的唯一颜色并将其除以 2。然后我将此值分配给 -colors 选项,如下所示:

变量 = 唯一颜色 / 2

转换 image.png -colors 变量 -depth 8

我认为这会大大减小图像的大小,但会增加磁盘上的图像大小。任何人都可以对此有所了解。

谢谢。

编辑:原来问题是抖动。抖动有助于减少的彩色图像看起来更像原件,但会增加图像大小。要删除 ImageMagick 中的抖动,请将 +dither 添加到您的命令中。例子

转换 CandyBar.png +dither -colors 300 -depth 8 smallCandyBar.png

4

3 回答 3

3

Imagemagick 可能使用一些抖动算法来使图像看起来好像具有原始颜色量。这增加了图像数据的“随机性”(单个像素在某些地方重新着色以混合到其他颜色)并且该图像数据也不再打包。进一步研究该convert命令如何进行抖动。您还可以通过在 gimp/等效程序中添加第二张图像作为图层并调整透明度来查看此效果。

于 2010-11-17T12:23:16.063 回答
1

您应该为此使用pngquant 。

您无需猜测颜色的数量,它具有实际--quality设置:

pngquant --verbose --quality=70 image.png

以上将自动选择匹配给定质量所需的颜色数量,与 JPEG 质量相同(100 = 完美,70 = 正常,20 = 糟糕)。

pngquant具有明显更好的量化算法,并且量化越好,质量/文件大小比就越好。

并且pngquant不会在没有抖动的情况下抖动看起来不错的区域,这样可以避免向文件添加不必要的噪声/随机性。

于 2013-03-06T01:54:04.860 回答
0

“新”PNG 的压缩效果不如原始 PNG。

于 2010-11-17T11:22:01.847 回答