Graphics 减少PNG图像中的颜色会使文件变大

Graphics 减少PNG图像中的颜色会使文件变大,graphics,colors,png,imagemagick,graphicsmagick,Graphics,Colors,Png,Imagemagick,Graphicsmagick,我使用ImageMagick通过减少图像中的颜色以编程方式减少PNG图像的大小。我得到图像独特的颜色,并除以2。然后我将此值指定给-colors选项,如下所示: 变量=唯一颜色/2 convert image.png-颜色变量-深度8 我认为这将大大减少图像的大小,但相反,它增加了磁盘上的图像大小。有人能解释一下吗 谢谢 编辑:原来问题是抖动。抖动有助于缩小彩色图像看起来更像原始图像,但会增加图像大小。要删除ImageMagick中的抖动,请在命令中添加+抖动。 范例 convert Candy

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

变量=唯一颜色/2

convert image.png-颜色变量-深度8

我认为这将大大减少图像的大小,但相反,它增加了磁盘上的图像大小。有人能解释一下吗

谢谢

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


convert CandyBar.png+抖动-颜色300-深度8 smallerCandyBar.png

新的png压缩不如原始的压缩。

新的png压缩不如原始的压缩。

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

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

您应该使用它

您不需要猜测颜色的数量,它具有实际的
--质量
设置:

pngquant --verbose --quality=70 image.png
上面将自动选择与JPEG质量相同比例的给定质量匹配所需的颜色数量(100=完美,70=正常,20=糟糕)

pngquant
具有更好的量化算法,量化效果越好,质量/文件大小比也越高

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

您应该使用它

您不需要猜测颜色的数量,它具有实际的
--质量
设置:

pngquant --verbose --quality=70 image.png
上面将自动选择与JPEG质量相同比例的给定质量匹配所需的颜色数量(100=完美,70=正常,20=糟糕)

pngquant
具有更好的量化算法,量化效果越好,质量/文件大小比也越高


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

对不起,我不完全理解。一个图像压缩算法怎么可能如此之好,以至于在ImagicMagick压缩器中去除70%的颜色时,它也会生成更小的图像。对不起,我不完全理解。一个图像压缩算法怎么可能如此之好,以至于在ImagicMagick压缩器中70%的颜色被去除的情况下,它也能生成更小的图像。如果您能提供两个样本png文件的链接供我们查看,这会有所帮助。也就是说,我的第一个猜测是生成后一个文件时没有进行任何压缩。请记住,PNG格式支持多个压缩级别。我使用identify函数查看压缩完成了什么,两个图像使用相同的压缩(Zip)。压缩级别对我来说是个问题,因为即使质量达到90(ImagicMagick PNG的最大压缩),它也会创建一个更大的文件。出于这个原因,我不使用“质量”选项。如果您能提供两个示例png文件的链接供我们查看,这会有所帮助。也就是说,我的第一个猜测是生成后一个文件时没有进行任何压缩。请记住,PNG格式支持多个压缩级别。我使用identify函数查看压缩完成了什么,两个图像使用相同的压缩(Zip)。压缩级别对我来说是个问题,因为即使质量达到90(ImagicMagick PNG的最大压缩),它也会创建一个更大的文件。出于这个原因,我不使用质量选项。废话,废话,废话,你完全正确。我不知道抖动会给图像增加那么多字节;现在一切都有意义了。我浪费了太多时间想弄明白这一点。非常感谢。废话,废话,废话,你完全正确。我不知道抖动会给图像增加那么多字节;现在一切都有意义了。我浪费了太多时间想弄明白这一点。谢谢。