4

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

我正在尝试实现以下结果,其中狗贴纸位于单独的 GIF 中。

在此处输入图像描述

4

2 回答 2

3

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

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

背景: 在此处输入图像描述

动画1: 在此处输入图像描述

动画:2 在此处输入图像描述

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

在此处输入图像描述

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

于 2018-03-27T19:19:51.280 回答
3

也许这更符合您的要求。Unix 语法中的 Imagemagick 命令行代码:

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

背景:

在此处输入图像描述

前景:

在此处输入图像描述

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

在此处输入图像描述

于 2018-03-27T21:23:40.887 回答