我有一些PNG文件,我希望转换为256色(即类似GIF) . 每个图像都有透明度,但是当我尝试转换时,我总是在最终图像上出现黑色背景 .
这是我当前的命令:
convert file.png -colors 255 file256.png
我认为应该适用于PNG) . 我已经尝试了许多其他选项,例如 -background none
, -channel RGBA
和 -matte
,但一切都没有 .
有趣的是,这个命令在转换为灰度时确实有效:
convert file.png -channel RGBA -matte -colorspace gray file256.png
它保持透明的背景 . 但是用 -colors 256
替换 -colorspace gray
不起作用 .
2 回答
使用255而不是256种颜色的原因是需要为"binary" / "boolean"透明保留一种颜色,即该颜色的所有像素都被解释为完全透明 . 那里(通常)不像是具有256色/调色板图像的alpha通道 . 作为参考,您可能需要阅读有关Color Quantization and Transparency和GIF Boolean Transparency的ImageMagick用法部分 . 也就是说,这应该将带有alpha通道的32位真彩色PNG转换为带有调色板的8位PNG,其中输入图像中完全透明的所有像素在输出图像中也是完全透明的:
png8
指示ImageMagick编写类似GIF的"8-bit indexed with optional binary transparency" PNG并暗示使用255 "real"颜色 .您是否尝试过-colorspace透明以保留Alpha通道?