使用 imagemagick 根据渐变设置 alpha

Set alpha according to gradient with imagemagick

是否可以使用 ImageMagick 根据渐变设置图像的 alpha 通道?

我希望图像左边框的像素 100% 透明,右边框的像素 100% 不透明,中间的像素透明度值逐渐降低。

或者在更一般的情况下 - 给定一张灰度图像,将另一张图像的 alpha 通道设置为黑白值的函数 (black = 100% alpha, white 0% alpha)。

简单。您将使用 -composite CopyOpacity 从渐变蒙版设置 alpha 通道。

鉴于我有以下图片。 image.png & transparent_mask.png

我们可以通过将值从蒙版图像复制到输入图像 alpha 通道来设置图像透明度(其中黑色是 alpha,白色是不透明)。

convert image.png transparent_mask.png -compose CopyOpacity -composite output.png

借助 ImageMagick,您可以使用 -sparse-color 将渐变仅应用于 alpha 通道以获得您描述的结果。

convert in.png -alpha set -background none -channel A \
    -sparse-color barycentric "0,0 none %[w],0 white" +channel out.png

该命令首先激活 Alpha 通道并将背景颜色设置为透明。然后它使用 -channel A 将以下操作仅应用于 alpha 通道。 -sparse-color 操作告诉它从最左边缘的透明像素 0,0 开始,然后逐渐在像素 %[w],0 处变为不透明。 %[w] 表示宽度或最右边缘。

虽然有很多方法可以实现您所描述的效果,但通过使用 -sparse-color,您可以轻松地使渐变在图像上的任何位置开始和结束,而无需创建任何中间蒙版图像。