【问题标题】:how to make this effect with imagemagick如何使用 imagemagick 制作这种效果
【发布时间】:2019-02-25 22:56:37
【问题描述】:

背景图: background

最终效果: gif effect

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

我试过这个:

转回.png (-clone1 -重心-几何+10+10 heart.png) (-clone 1 *******)

这只是动了心,却没有覆盖文字。

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

带面具?

【问题讨论】:

  • 您能向我们展示更多您的代码吗?另请阅读:How to ask question
  • 你从哪里得到这些图片的?创作者可能通过将文本和心脏逐帧添加到动物的背景上来创建它们。发布心脏的图像。什么版本的 Imagemagick?您必须在心脏移动时覆盖每帧中的文本,或者在没有文本的情况下开始并在心脏移动时添加它。您还必须使用复合来组合背景和心脏。

标签: imagemagick imagemagick-convert


【解决方案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 用户想要发布转换,那就太好了。

【讨论】:

  • 效果很好!非常感谢@fmw42,这是我在stackoverflow中的第一个问题,很快就能得到完美的答案。谢谢!
猜你喜欢
  • 2021-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多