【发布时间】:2019-12-17 00:25:42
【问题描述】:
我在 Affinity Designer 中创建了一个图像,该图像具有以下通道:
R、G 和 B:
阿尔法:
当我在其他地方(虚幻引擎)使用此图像时,由于 RGB 通道的黑色部分,我在形状边缘出现了小的黑色伪影。我需要的唯一重要信息是 Alpha 通道。
如何使用 ImageMagick 将 RGB 通道替换为白色,同时保留 Alpha 通道?
【问题讨论】:
标签: image-processing imagemagick
我在 Affinity Designer 中创建了一个图像,该图像具有以下通道:
R、G 和 B:
阿尔法:
当我在其他地方(虚幻引擎)使用此图像时,由于 RGB 通道的黑色部分,我在形状边缘出现了小的黑色伪影。我需要的唯一重要信息是 Alpha 通道。
如何使用 ImageMagick 将 RGB 通道替换为白色,同时保留 Alpha 通道?
【问题讨论】:
标签: image-processing imagemagick
这是一个在 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 分量的白色。
【讨论】:
试试下面...
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。
祝你好运!
【讨论】: