2010-11-17 37 views
1

我正在使用ImageMagick以编程方式减小图像中的颜色来缩小PNG图像的大小。我得到的图像独特-颜色和除以2这个然后我如下分配该值到-colors选项:减少PNG图像中的颜色使文件变得更大

变量=独特-颜色/ 2

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

我认为这将大大减少图像的大小,而是增加磁盘上的图像大小。任何人都可以解释这一点。

谢谢。

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

转换CandyBar.png +抖动-colors 300 -depth 8 smallerCandyBar.png

+0

这将有助于,如果你可以给两个样本png文件的链接供我们审查。也就是说,我的第一个猜测是后面的文件是在没有任何压缩的情况下生成的。请记住,PNG格式支持多种压缩级别。 – 2010-11-17 12:10:54

+0

我使用识别功能来查看做了什么压缩,两个图像使用相同的压缩(Zip)。压缩级别对我来说是一个问题,因为即使质量在90(ImagicMagick PNG的最大压缩率),它也会创建一个更大的文件。为此,我不使用质量选项。 – toc777 2010-11-17 12:19:54

回答

3

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

+1

废话,废话,废话,废话,你完全正确。我不知道抖动会将很多字节添加到图像中;现在一切都说得通了。我浪费了很多时间试图弄清楚这一点。非常感谢。 – toc777 2010-11-17 12:35:49

0

“新” PNG的压缩并不像原来的一样好。

+1

对不起,但我不完全明白。即使当ImagicMagick压缩器的70%的颜色被移除时,图像压缩算法如何能够产生更小尺寸的图像。 – toc777 2010-11-17 11:39:27

0

您应该为此使用pngquant

你并不需要猜测的色彩数,它有实际--quality设置:

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

上面会自动选择在同等规模JPEG质量符合特定的质量所需的颜色数(100 =完美,70 =好,20 =糟糕)。

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

pngquant不抖动的区域看起来很好没有抖动,这避免了不必要的噪音/随机性添加到文件。