合并两个透明的GIF作为图层

时间:2017-04-06 03:15:34

标签: animation imagemagick gif

我在imagemagick论坛上发现了这个页面:Merging 2 gifs, one is animated and transparent链接到Animation Modification上的imagemagick文档;具体来说,这里的例子是:

  convert canvas_prev.gif -coalesce \
          -gravity NorthEast  -draw 'image over 5,5 0,0 "rose:"' \
          -layers Optimize   draw_over.gif

这是我的尝试。我有这两个GIF(我可能感觉有点病态)。第一个中的白色实际上是透明的。

enter image description here

enter image description here

当我跑

convert eyes.gif -coalesce -draw ' image over 0,0 0,0 "trump.gif" ' combine.gif

我明白了:

enter image description here

这不是我想要的完整效果。特朗普动画根本不再播放。

我希望看到更像这样的东西(这是在Phaser JS中创建的,但这使我无法将结果导出为除手动录制截屏视频之外的新图像):

enter image description here

1 个答案:

答案 0 :(得分:1)

一种方法,但不确定它是否是最好的,如下:

  1. 将两个动画转换为相同尺寸的精灵表
  2. 将一张图片粘贴到另一张
  3. 将结果剪切成较小的帧并将其转换为动画GIF
  4. 命令应如下所示:

    montage -background none t.gif -tile x1@ -geometry +0+0 tt.png
    montage e.gif[0-16,0-9] -tile x1@ -geometry +0+0 ee.png
    magick convert -delay 10 -loop 0 ee.png tt.png -coalesce -flatten \
            -crop 150x150 +repage output.gif
    

    整蛊部分是带眼睛图像的第二行。它只有17帧,而头骨有27.所以必须调整精灵表的大小。

    我工作,但我对此不太满意,因为解决方案需要手动输入一些参数(帧选择和输出图像尺寸)。