如何使用ImageMagick将GIF放置在另一个GIF上,其中两个GIF的大小不同

时间:2018-03-27 10:56:44

标签: image-processing imagemagick imagemagick-convert gifsicle

我有两个不同大小的GIF。我希望能够将一个动画GIF放置在特定位置的静态背景GIF上,同时将文本添加到结果中。我是ImageMagick世界的新手,请帮忙。

我试图获得以下结果,其中狗贴在一个单独的GIF中。

enter image description here

2 个答案:

答案 0 :(得分:1)

如果您的两个动画没有相同的延迟和帧数,请参阅https://www.imagemagick.org/Usage/anim_mods/#merging

如果您的动画具有相同的延迟和帧数,则可以执行(unix语法):

背景: enter image description here

动画1: enter image description here

动画:2 enter image description here

convert skyblue.gif \
null: \
\( morph_anim_1pt.gif -coalesce \) \
-gravity northwest -geometry +20+20 -compose over -layers composite \
null: \
\( morph_anim_5pts.gif -coalesce \) \
-gravity southeast -geometry +20+20 -compose over -layers composite \
-layers optimize \
result.gif

enter image description here

请参阅https://www.imagemagick.org/Usage/anim_mods/#composite及后续部分。

答案 1 :(得分:1)

也许这更像你想要的。 unix语法中的Imagemagick命令行代码:

背景动画有3帧,前景1有11帧。所以我重复背景4次并删除最后一帧,因此背景总共有11帧。我合并动画并使用-annotate为每个帧添加文本。然后我使用-layers composite将前景动画叠加到背景上。

背景:

enter image description here

前景:

enter image description here

convert -delay 20 \
\( glitter_blue_tiled.gif glitter_blue_tiled.gif \
glitter_blue_tiled.gif glitter_blue_tiled.gif \
-coalesce \
+delete \
-font arial -pointsize 28 -fill black -gravity north \
-annotate +0+20 "TESTING" \) \
null: \
\( coalesced_k.gif -coalesce \) \
-gravity south -geometry +0+20 \
-compose over \
-layers composite \
-layers optimize \
-loop 0 \
result2.gif

enter image description here