我有一张图像,我想让它顶部变浅,底部变淡,没有任何效果。因此,如果图像一开始是纯绿色,那么最后它看起来会像从浅绿色到绿色的渐变。
我认为我可以做这样的事情(使用渐变作为蒙版在图像顶部合成一个白色块):
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% 之间线性淡出。