用png包裹一个gif

时间:2017-09-15 08:18:30

标签: imagemagick gif animated-gif imagemagick-convert

有两个图像,一个是gif,另一个是png。现在我需要用png图像包装gif图像。我使用ImageMagick,我认为它可能对我有用。

convert src.png input.gif -gravity Center -composite des.gif;
  • 如您所见,当存在黑色块时输出是意外的。
  • 并且des.gif没有动画。

enter image description here

左边是des.gif,右边是input.gif

修改

这是我的测试文件。 https://drive.google.com/drive/folders/0B-64AliLi9OnWVQyLWU3TElHNHM?usp=sharing

1 个答案:

答案 0 :(得分:1)

你有77帧。但第一帧比其他所有帧都要小得多。从Imagemagick(6.9.9.13 Q16 Mac OSX Sierra),我可以从

看到这一点
identify input.gif

input.gif[0] GIF 216x384 216x384+0+0 8-bit sRGB 256c 3.20786MiB 0.010u 0:00.009

input.gif[1] GIF 1080x1920 216x384+0+0 8-bit sRGB 64c 3.20786MiB 0.010u 0:00.009

...

input.gif[76] GIF 1080x1920 216x384+0+0 8-bit sRGB 64c 3.20786MiB 0.000u 0:00.000

除了第一帧之外的所有帧都接近纯绿色。只有第一个中有一个圆圈。

然而,如果您修复了input.gif,则可以使用以下命令对它们进行合成,以便所有gif帧在背景png上显示动画:

convert image.png null: \( input.gif -coalesce \) -gravity Center -layers composite des.gif

请注意,合并后所有帧都变为216x384。这使得叠加帧太小了。这将使所有框架更大,以便它们适合背景。但是对于第一个来说,仍然都是绿色的。

convert image.png null: \( input.gif -coalesce -resize 1080x1920! \) -gravity Center -layers composite des.gif

参见http://www.imagemagick.org/Usage/anim_mods/#background 如果使用Imagemagick 7,则将转换为magick。