我正在尝试使用ImageMagick创建透明的PNG。无论是“转换”的咒语,当我对图像使用识别时,它总是说:
Depth: 8/1 bit
Channel depth:
gray: 1 bit
alpha: 1 bit
当我查看网络上发现的透明PNG时,它说:
Depth: 8 bit
gray: 8 bit
alpha: 8 bit
这似乎很重要的原因是我在FFMPEG中使用我创建的透明PNG作为水印。当我使用ImageMagick创建的PNG时,它会使视频看起来像50%的灰色不透明度。但是,当我使用网上找到的PNG时,它运行正常。根据确定,唯一的区别是深度。
以下是我尝试过的一些事情:
convert -size 640x480 xc:none -depth 8 test.png
convert -size 640x480 xc:transparent -depth 8 test.png
我注意到的另一件事是Gimp将ImageMagick图像显示为具有灰度的色彩空间,即使识别它是RGB。我在网上找到的图像有效,在Gimp和识别中显示RGB的色彩空间。
有什么想法吗?
答案 0 :(得分:1)
首先,关于ImageMagick的'灰度'。
ImageMagick实际上并没有这样的色彩空间。它只通过将R(红色),G(绿色)和B(蓝色)通道中的所有值设置为相同的值,在RGB空间内伪造它。 (如果三个值不相同,则图像不再是灰度。)
其次,关于您(似乎)尝试使用8位Alpha通道创建图像失败。
这是因为您没有在透明区域中添加任何不同的“颜色”值 - 它们都是普通的(完全透明)。
尝试使用此命令转换内置的ImageMagick logo:
图片:
convert \
logo: \
-bordercolor white \
-background black \
+polaroid \
polaroid.png
输出图像:
将很乐意显示您所需的8位alpha值:
identify -verbose polaroid.png | grep -A 4 "Channel depth:"
Channel depth:
red: 8-bit
green: 8-bit
blue: 8-bit
alpha: 8-bit
或尝试将内置rose:
图片转换为半透明图片:
convert rose: -alpha set -channel A -fx '0.5' semitransp-rose.png
相同的结果:alpha通道的8位深度。
修改原始命令之一:
convert -size 640x480 xc:none -depth 8 -channel A -fx 0.5 test.png
如果你identify -verbose
得到的图像,你会发现R,G和B通道只有1位深度,而A通道是8位。这是因为它实际上使用的值与0
不同,而其他渠道都是0
。