【问题标题】:How to place a GIF on another GIF with ImageMagick, where both GIFs are of different sizes如何使用 ImageMagick 将 GIF 放在另一个 GIF 上,其中两个 GIF 的大小不同
【发布时间】:2018-09-05 18:08:51
【问题描述】:

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

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

【问题讨论】:

  • 图像是动画的,以防您没有注意到。这使它变得更加复杂,因为一个可能以每秒 12 帧的速度运行,而另一个可能以每秒 20 帧的速度运行。此外,覆盖的可能具有透明度,也可能没有。
  • 您必须获取每个剪辑的持续时间,计算出帧速率的最低公倍数,将帧映射到公共时基,叠加,将较短的剪辑填充到较长的长度一并重新优化...呃,呃,呃。不过有可能。
  • 如果您发布单独的输入动画会有所帮助。

标签: image-processing imagemagick imagemagick-convert gifsicle


【解决方案1】:

如果您的两个动画的延迟和帧数不同,请参阅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 及后续部分。

【讨论】:

    【解决方案2】:

    也许这就是你想要的。 Unix 语法中的 Imagemagick 命令行代码:

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

    背景:

    前景:

    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
    

    【讨论】:

      猜你喜欢
      • 2019-06-26
      • 2021-03-18
      • 2017-01-11
      • 2014-05-25
      • 2015-09-04
      • 1970-01-01
      • 2021-12-02
      • 2012-12-02
      • 2011-07-27
      相关资源
      最近更新 更多