我想看看是否可以通过更改 png 颜色类型来减少 PNG 的字节数。我试图保持尽可能高的尺寸(理想情况下为 100 或 150)。这些图像并不复杂,我认为我可以使用 1 位深度的索引颜色(颜色类型 3),但我的方法似乎不起作用。有人成功实现过吗?
我在规范中看到:
这篇文章似乎涵盖了该主题,但我进行了一些测试:
当我运行这个时:
magick identify A.png
我得到了这个:
A.png PNG 100x100 100x100+0+0 8-bit sRGB 1676B 0.000u 0:00.001
我跑了这个:
convert A.png -type palette -depth 1 convertedA.png
magick identify convertedA.png
结果是:
convertedA.png PNG 100x100 100x100+0+0 8-bit sRGB 3c 1544B 0.000u 0:00.002
我运行了这些命令:
convert A.png -background white -flatten -type palette -depth 1 -colors 2 c1A.png
magick -identify c1A.png
结果是:
c1A.png PNG 100x100 100x100+0+0 8-bit sRGB 2c 1532B 0.000u 0:00.001
我在线程中运行了更新的命令:
A.png -background white -flatten -type palette -depth 1 -colors 2 output.png
magick identify output.png
并得到:
output.png PNG 100x100 100x100+0+0 8-bit sRGB 2c 1532B 0.000u 0:00.000
所以它们仍然是 8 位,并且大小没有显着变化(1,676 到 1,544 到 1,532 到 1,532)。
我也看到了这篇文章,但它有点过时了。
您的图像包含 168 种颜色和 672 字节的 ICC 配置文件。您可以使用 ImageMagick 查看这两个统计数据,如下所示:
magick identify -verbose YOURIMAGE
或者您可以使用以下方法来计算颜色:
magick -format %k GbeWF.png info:
168
您或许还可以通过以下方式查看 ICC 配置文件的大小:
exiftool -v YOURIMAGE
我不知道你真正想做什么,但你可以使用以下方法删除 ICC 配置文件并将颜色减少到 2:
magick YOURIMAGE -colors 2 -strip result.png
然后再次检查:
magick identify -verbose YOURIMAGE
并查看输出末尾附近的字节大小、PNG 颜色模式和 PNG 位深度。