gpt4 book ai didi

image-processing - 使用 ImageMagick 通过保留半透明像素将 32 位 png 转换为 8 位 png

转载 作者:行者123 更新时间:2023-12-04 01:52:06 52 4
gpt4 key购买 nike

我想使用 ImageMagick 将 32 位 png 转换为 8 位 png,但是半透明像素丢失了。如何解决这个问题呢?我正在使用的命令如下

convert original.png PNG8:output.png

最佳答案

显然,即使 PNG 格式实际上允许 8 位索引颜色 PNG 中的任何和所有颜色完全或部分透明,ImageMagick 的“PNG8”format specifier仅支持 GIF 样式的 1 位透明度。

如果不使用 PNG8:,可以使用 ImageMagick 生成索引的 8 位 PNG。说明符,但只需使用 -colors 256-colors 255 * 减少图像中的颜色数量。不幸的是,至少根据我使用 ImageMagick 6.8.9 的测试,生成的图像有一些相当奇怪且非常难看的颜色量化伪像。

幸运的是,对于这项特定的工作,有一个更好的工具:pngquant .使用它,以最小的质量损失将 32 位 RGBA PNG 转换为 8 位颜色映射 PNG 就像:

pngquant 256 < original.png > output.png

作为快速演示,这里有一个使用各种方法转换为 8 位 PNG 的简单测试图片(带有半透明阴影的星星):

Original pngquant 256 ImageMagick convert (-colors 255) ImageMagick convert (PNG8) ImageMagick convert (-colors 255, PNG8)



从左到右:
  • 原始 32 位 RGBA PNG
  • pngquant 256 < input.png > output.png 量化
  • convert input.png -colors 255 output.png 量化*
  • convert input.png PNG8:output.png 量化
  • convert input.png -colors 255 PNG8:output.png 量化*


  • *) 在下面的评论中,建议使用 -colors 255有必要“为'背景'颜色保留一个条目。”根据我的测试,我没有观察到实际情况。使用 -colors 256仍会 produce an 8-bit colormapped PNG ,量化伪影与 -colors 255 的输出在性质上相似,但在细节上有所不同。 .尽管如此,为了安全起见,我使用了 -colors 255对于上面的例子。将颜色图大小减少一种颜色本身不应显着影响结果的质量,作为对 pngquant 255 的测试。将 demonstrate .

    关于image-processing - 使用 ImageMagick 通过保留半透明像素将 32 位 png 转换为 8 位 png,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14031965/

    52 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com