如何使用 imagemagick 制作这种效果

how to make this effect with imagemagick

背景图: background

最终效果: gif effect

如何让红心移动并覆盖背景文字?

我试过这个:

转换 back.png (-clone1 -gravity center -geometry +10+10 heart.png ) (-clone 1 *******)

此文只是感动,未盖正文

如何让红心移动并遮住部分背景文字?

戴口罩?

这是使用 Imagemagick 的一种方法。首先,我需要从您的一个动画帧中裁剪出心形,因为您没有提供。

心像:

背景图片:

首先,我在桌面上创建了一个名为 test 的新文件夹,并将两张图片放入其中。

这是 (Bash) Unix 语法中的代码。

我从背景的右侧开始倒退到左侧。然后使用 j=(55-i) 反转 i 索引,以便稍后按字母顺序组合。 jj 计算向小于 10 的索引添加前导零,以便所有帧按字母顺序列在测试文件夹中。

对于每一帧,它提取背景的 alpha 通道并在右侧绘制一个黑色矩形,然后使用 -compose copy_opacity -composite 将该结果放回背景图像的 alpha 通道。这有效地将透明度置于粉红色字母所在的位置。然后我将心脏图像合成为我绘制黑色矩形的相应左边缘。

循环结束后,我从测试目录中收集名称以 tmp_ 开头的所有帧,并创建一个 gif 动画并写入桌面。

x=564
for ((i=0; i<56; i++)); do
j=$((55-i))
jj=`printf "%02d\n" $j`
convert background.png \
\( -clone 0 -alpha extract -fill black -draw "rectangle $x,0 639,123" \) \
-alpha off -compose copy_opacity -composite \
heartshape.png -geometry +${x}+28 -compose over -composite tmp_$jj.gif 
x=$((x-8))
done
convert -dispose background -delay 10 tmp_*.gif -loop 0 ../heart_animation.gif


请注意 Windows Imagemagick 和脚本语法不同。如果某种 Windows 用户想要 post 转换,那就太好了。