【问题标题】:Merging two transparent gifs as layers将两个透明 gif 合并为图层
【发布时间】:2017-08-31 21:14:36
【问题描述】:

我在 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(我可能感觉有点病态)。第一个中的白色实际上是透明的。

当我跑步时

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

我明白了:

这不是我想要的完整效果。王牌动画根本不再播放。

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

【问题讨论】:

    标签: animation imagemagick gif


    【解决方案1】:

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

    1. 将两个动画转换为相同尺寸的精灵表
    2. 将一张图片粘贴到另一张图片上
    3. 将结果剪切成更小的帧并将其转换为动画 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 帧。因此必须调整精灵表大小。

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

    【讨论】:

    • 我可以通过编程方式获取来自this question 的代码的帧数,并且我会知道尺寸,所以这应该可以用于我的应用程序。尽管您认为可能有更好的方法,但我会暂时不接受答案。
    猜你喜欢
    • 1970-01-01
    • 2016-05-02
    • 1970-01-01
    • 1970-01-01
    • 2019-11-28
    • 2015-12-03
    • 2012-09-26
    • 2011-11-08
    • 2011-07-03
    相关资源
    最近更新 更多