5

我有一个透明的PNG图像:

原创.png
原来的

现在我想使用 ImageMagick 将对角渐变应用到它的 alpha 通道。我的意思是让它的不透明度保持在左上角,并逐渐淡出到右下角完全透明。像这样:

结果.png
结果

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

手术

(此处为可见性显示在棋盘上的原始和结果,但我的意思是实际透明度)

我想我了解如何生成对角渐变(重心渐变命令对此非常有用)。但这会在颜色通道中创建渐变,即彩色或灰度渐变。而我想在Alpha通道上应用渐变。

IM 手册中,我了解到-compose CopyOpacity操作员可以用于此目的。然而,这似乎将 alpha 从蒙版复制到我的图像上。我需要在现有的 alpha 通道上“应用”这种渐变颜色,所以基本上我需要将图像的 alpha 通道乘以渐变图像的灰度颜色。

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

4

1 回答 1

5

这是您可以做到的一种方法:

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.

于 2016-11-02T15:10:47.520 回答