如何使用ImageMagick获得8位灰度和alpha通道深度?

时间:2011-06-14 22:17:07

标签: imagemagick

我正在尝试使用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的色彩空间。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

首先,关于ImageMagick的'灰度'。

ImageMagick实际上并没有这样的色彩空间。它只通过将R(红色),G(绿色)和B(蓝色)通道中的所有值设置为相同的值,在RGB空间内伪造它。 (如果三个值不相同,则图像不再是灰度。)


其次,关于您(似乎)尝试使用8位Alpha通道创建图像失败。

这是因为您没有在透明区域中添加任何不同的“颜色”值 - 它们都是普通的(完全透明)。

尝试使用此命令转换内置的ImageMagick logo:图片:

convert              \
   logo:             \
  -bordercolor white \
  -background black  \
  +polaroid          \
   polaroid.png

输出图像:

Polaroid effect by ImageMagick

将很乐意显示您所需的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