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

问题描述

| 我正在尝试使用ImageMagick创建透明的PNG。不管是“转换”,还是当我对图像使用识别时,它总是说:
Depth: 8/1 bit
Channel depth:
  gray: 1 bit
  alpha: 1 bit
当我查看网上找到的透明PNG时,它说:
Depth: 8 bit
  gray: 8 bit
  alpha: 8 bit
这似乎很重要的原因是我正在使用自己创建的透明PNG作为FFMPEG中的水印。当我使用ImageMagick创建的PNG时,它会导致视频看起来像50%的灰色不透明度。但是,当我使用在网上找到的PNG时,它可以正常工作。据鉴定,唯一的区别是深度。 这是我尝试过的一些方法
convert -size 640x480 xc:none -depth 8 test.png
convert -size 640x480 xc:transparent -depth 8 test.png
我注意到的另一件事是Gimp将ImageMagick图像显示为具有灰度色域,即使identify表示它是RGB。我在网上找到的有效图像在Gimp和identify中都显示了RGB的色彩空间。 有任何想法吗?     

解决方法

        首先,关于ImageMagick的“灰度”。 ImageMagick实际上没有这样的色彩空间。通过将R(红色),G(绿色)和B(蓝色)通道中的所有值设置为相同的值,它只能在RGB空间内伪造它。 (如果三个值不相同,则图像不再是灰度。) 其次,关于您(看似)尝试用8位alpha通道创建图像的尝试失败。 这是由于您没有在透明区域中放置任何“ \ color”值而引起的-它们都是纯色(完全透明)。 尝试使用以下命令来转换内置的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
或者尝试将内置的ѭ6图像转换为半透明的图像:
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
如果对结果图像进行“ 9”缩放,则R,G和B通道的深度仅为1位,而A通道的深度为8位。那是因为它实际上使用的值与
0
不同,而其他通道都为all10ѭ。     

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...