ImageMagick:用白色替换 RGB 通道,保留 Alpha

ImageMagick: Replace RGB channels with white, retain Alpha

我在 Affinity Designer 中创建了一个图像,它具有以下通道:

R、G 和 B:

阿尔法:

当我在其他地方使用此图像时 (Unreal Engine),由于 RGB 通道的黑色部分,我在形状的边缘出现了小的黑色伪像。我需要的唯一重要信息是 alpha 通道。

如何使用 ImageMagick 将 RGB 通道替换为白色,同时保留 Alpha 通道?

尝试以下...

magick \( input.png -fill white -draw 'color 0,0 reset' \) \
       \( input.png -alpha extract \) \
       -compose Copy_Alpha -composite \
       output.png

我相信有更好的方法可以完成上述操作。读取 input.png 两次,提取 alpha 通道有点多余。

第一部分将所有 RGB 通道替换为白色,但也清除了 alpha 通道。

input.png -fill white -draw 'color 0,0 reset'

第二部分抓alpha通道

input.png -alpha extract

最后,我们将提取的 alpha 值复制回白色图像的 alpha 通道。

-compose Copy_Alpha -composite

如果您使用 ImageMagick-6,请将 magick 替换为 convert,将 Copy_Alpha 替换为 Copy_Opacity

祝你好运!

这是在 ImageMagick 中执行此操作的简单方法:

首先,由于您没有提供实际图像,我将从 rgb.png 和 alpha.png

中重建它
convert rgb.png alpha.png -alpha off -compose copy_opacity -composite image.png


现在,要使 rgb 部分变白,只需执行以下操作:

convert image.png -fill white -colorize 100 result.png


现在要看到 rgb 部分是全白的,我们这样做:

identify -verbose result.png
.
.
.
 Channel statistics:
    Pixels: 512
    Gray:
      min: 255  (1)
      max: 255 (1)
      mean: 255 (1)
      standard deviation: 0 (0)
      kurtosis: -4.9152e+52
      skewness: 9.375e+35
      entropy: 0
    Alpha:
      min: 0  (0)
      max: 255 (1)
      mean: 187.152 (0.733931)
      standard deviation: 109.252 (0.42844)
      kurtosis: -0.822401
      skewness: -1.05578
      entropy: 0.336307


所以 rgb 分量是常量 255(白色),图像现在是白色的,带有 alpha 分量。