Animation 将两个透明GIF合并为层

Animation 将两个透明GIF合并为层,animation,imagemagick,gif,Animation,Imagemagick,Gif,我在imagemagick论坛上找到了这个页面:链接到上的imagemagick文档;具体来说,这里的示例如下: convert canvas_prev.gif -coalesce \ -gravity NorthEast -draw 'image over 5,5 0,0 "rose:"' \ -layers Optimize draw_over.gif 这是我的尝试。我有这两个GIF(我可能感觉有点病态)。第一个区域中的白色实际上是透明的

我在imagemagick论坛上找到了这个页面:链接到上的imagemagick文档;具体来说,这里的示例如下:

  convert canvas_prev.gif -coalesce \
          -gravity NorthEast  -draw 'image over 5,5 0,0 "rose:"' \
          -layers Optimize   draw_over.gif
这是我的尝试。我有这两个GIF(我可能感觉有点病态)。第一个区域中的白色实际上是透明的

当我跑的时候

convert eyes.gif -coalesce -draw ' image over 0,0 0,0 "trump.gif" ' combine.gif
我明白了:

这不是我想要的全部效果。特朗普动画不再播放

我想看到更像这样的东西(这是在Phaser JS中创建的,但除了手动录制屏幕广播之外,我没有办法将结果导出为新图像):


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

  • 将两个动画转换为相同尺寸的精灵图纸
  • 将一个图像粘贴到另一个图像上
  • 将结果剪切成更小的帧,并将其转换为动画GIF
  • 命令应如下所示:

    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帧。因此,必须调整精灵表的大小


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

    我可以通过编程方式获得给定代码的帧数,并且我将知道维度,因此这对于我的应用程序应该是可用的。尽管你认为可能有更好的方法,我还是暂时不接受这个答案。