我有一张透明的PNG图像:
现在我想使用ImageMagick 将对角线渐变应用于其Alpha通道。我的意思是它的不透明度保持在左上角,并在右下角逐渐淡出到完全透明。像这样:
所以基本上我想生成一个渐变,并将其用作图像的遮罩。但是图像已经有了自己的alpha通道(透明度)。这是我正在尝试的可视化:
(原件和结果在棋盘上显示为visiblity,但我的意思是实际透明度)
我想我理解如何生成对角线渐变(barycentric gradient命令对此非常有用)。但是这会在颜色通道中创建渐变,即彩色或灰度渐变。而我想在 alpha 频道上应用渐变。
从IM manual我了解-compose CopyOpacity
运算符可以用于此。然而,这似乎从掩码中复制 alpha到我的图像。我需要在我现有的Alpha通道上“应用”这种渐变颜色,所以基本上我需要我的图像的alpha通道乘以的渐变图像中的灰度颜色。
执行上述操作的正确IM命令行是什么?
答案 0 :(得分:3)
这是你可以做到的一种方式:
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
-write alpha.png
可以省略 - 它只是显示alpha层,用于调试和说明目的。
MPR
只是我在记忆中保存的原始图像的临时副本,而我正在使用alpha通道进行研究,并且我将其带回到最后。 alpha通道中的渐变由-fx
生成,我首先将颜色空间设置为灰色,因此它只需运行一次,而不是三次。
如果你事先知道树形图的尺寸,你可以用括号替换括号中的部分:
-size WxH gradient:black-white
但我不知道前面的尺寸,我不想要第二个convert
命令来获取它们,所以我基本上克隆原始图像的alpha通道以获得正确尺寸的画布并填充它与-fx
合作。