如何在 ImageMagick 中将渐变应用于图像?

如何在 ImageMagick 中将渐变应用于图像?

我有一张图像,我想让它顶部变浅,底部变淡,没有任何效果。因此,如果图像一开始是纯绿色,那么最后它看起来会像从浅绿色到绿色的渐变。

我认为我可以做这样的事情(使用渐变作为蒙版在图像顶部合成一个白色块):

convert a.jpg \( +clone -fill white \) \
      \( +clone gradient:white-black  \) \
      -composite out.jpg

或者这样(用渐变色给图像着色,逐渐变为透明)

convert a.jpg \( +clone 'gradient:black-rgba(0,0,0,0)' \) \
        -colorize 50% out.jpg

…但都不起作用。

答案1

convert a.jpg \( +clone -fx 'i/w' \) -compose multiply -composite out.jpg

这将复制图像并应用-fx操作员。该公式i/w遍历i= 0 到宽度的每个像素w,使得左侧(i == 0)输出为零(黑色),右侧(i == w)输出为 1(白色)。

然后进行合成multiply,使其从左侧的纯黑色逐渐褪色为最右边的纯原始颜色。

您还可以做这样的事情:

convert a.jpg \( +clone \
  -fx 'i/w < 0.2 ? 0.2 : (i/w -0.2)*4 + 0.2' \
  \) -compose multiply -composite output.jpg

这将使图像左侧 20% 变暗 80%,然后从左侧 40% 开始不产生效果,并且在 20% 和 40% 之间线性淡出。

相关内容