首页 文章

在ImageMagick已经具有透明度的图像上应用渐变蒙版?

提问于
浏览
1

我有一个透明的PNG图像:

original.png

Original

现在我想使用ImageMagick来实现 apply a diagonal gradient to its alpha channel . 我的意思是它的不透明度保持在左上角,并在右下角逐渐淡出到完全透明 . 像这样:

result.png

Result

所以基本上我想生成一个渐变,并将其用作图像的遮罩 . 但是图像已经有了自己的alpha通道(透明度) . 这是我正在尝试的可视化:

Operation

(原件和结果在棋盘上显示为visiblity,但我的意思是实际的透明度)

我想我理解如何生成对角线渐变(barycentric gradient命令对此非常有用) . 但这会在_1452702中产生渐变,即彩色或灰度渐变 . 而我想在 alpha Channels 上应用渐变 .

IM manual我明白 -compose CopyOpacity 运算符可以用于此 . 然而,这似乎将掩码中的alpha复制到我的图像上 . 我需要在现有的alpha通道上使用这种渐变色,所以基本上我需要将我的图像的alpha通道乘以渐变图像的灰度颜色 .

执行上面显示的操作的正确IM命令行是什么?

1 回答

  • 2

    这是你可以做到的一种方式:

    convert tree.png -write MPR:orig -alpha extract \
      \( +clone -colorspace gray -fx "1-j/h" \)     \
      -compose multiply -composite -write alpha.png \
      MPR:orig +swap -compose copyopacity -composite result.png
    

    enter image description here

    enter image description here

    -write alpha.png 可以省略 - 它只显示alpha层用于调试和说明目的 .

    MPR 只是我在内存中保存的原始图像的临时副本,而我正在使用alpha通道进行调查,并且我将其带回到最后 . alpha通道中的渐变由 -fx 生成,我首先将颜色空间设置为灰色,因此它只需运行一次,而不是三次 .

    如果您事先知道树图像的尺寸,则可以用括号替换括号中的部分:

    -size WxH gradient:black-white
    

    但我不想要第二个 convert 命令来获取它们,所以我基本上克隆原始图像的alpha通道以获得正确大小的画布并用 -fx 填充它 .

相关问题