使用灰度图像屏蔽Alpha通道

时间:2014-12-15 18:54:35

标签: imagemagick

我一直在尝试用ImageMagick做一些看似微不足道的事情,但我做不到。

我有一个透明的PNG(32位),我想用灰度图像(也是32位)掩盖那个。文件为32位的原因是它们是使用GIS工具生成的,默认情况下输出32位。我宁愿不必改变它,因为我的所有文件都已生成。

无论如何 - 这就是我现在用来做的事情:

convert                 \
  alpha_channel.png     \
   \(                   \
      mask.png          \
       -colorspace gray \
       -alpha off       \
   \)                   \
 -compose copy-opacity  \
 -composite             \
  PNG32:output.png

结果几乎正确,但我认为位深度存在一些问题。这很难解释,但您可以通过查看文件并将“output.png”与“expected_output.png”进行比较来轻松查看

以下是我正在使用的文件: https://www.dropbox.com/s/855fh8svgt45mqq/images.zip?dl=0

你认为我在这里做错了什么?

1 个答案:

答案 0 :(得分:1)

在我看来,所有信息都在文件alpha通道的alpha通道中,但你使用的是该文件中的双层灰度值,而不是具有任何内容的实际信息。

Image: alpha_channel.png
  Format: PNG (Portable Network Graphics)
  Mime type: image/png
  Class: DirectClass
  Geometry: 4096x4096+0+0
  Units: Undefined
  Type: Bilevel
  Base type: Bilevel
  Endianess: Undefined
  Colorspace: Gray
  Depth: 8-bit
  Channel depth:
    gray: 1-bit
    alpha: 8-bit
  Channel statistics:
    Pixels: 16777216
    Gray:
      min: 0 (0)
      max: 255 (1)
      mean: 228.324 (0.89539)
      standard deviation: 78.0429 (0.30605)
      kurtosis: 4.67613
      skewness: -2.58382
      mean: 41.3934 (0.162327)
      standard deviation: 22.3399 (0.0876074)
      kurtosis: -0.402954
      skewness: 0.327285
  Alpha: graya(0,0)   #00000000
  Colors: 118
  Histogram:
   1755067: (  0,  0,  0,  0) #00000000 graya(0,0)
    478353: (255,255,255, 37) #FFFFFF25 graya(255,0.145098)
    378182: (255,255,255, 51) #FFFFFF33 graya(255,0.2)
    374922: (255,255,255, 47) #FFFFFF2F graya(255,0.184314)
    368496: (255,255,255, 39) #FFFFFF27 graya(255,0.152941)
    362982: (255,255,255, 49) #FFFFFF31 graya(255,0.192157)

并且你也试图丢弃文件mask.png的alpha通道,因为它没有alpha通道,所以它看起来并不正确。所以,我对你的信息到底在哪里,或者你真正想要提取的内容感到困惑。我只能建议以下内容似乎提取了我认为你可能想要的内容,但与你的期望完全不同。不过,它可能会帮助你进一步发展....

convert alpha_channel.png -alpha extract \
   \( mask.png -colorspace gray \) \
   -compose copy-opacity -composite out.png

enter image description here