Imagemagick 用png包装gif

Imagemagick 用png包装gif,imagemagick,gif,animated-gif,imagemagick-convert,Imagemagick,Gif,Animated Gif,Imagemagick Convert,有两种图像,一种是gif,另一种是png。现在我需要用png图像包装gif图像。我使用的是ImageMagick,我认为它可能适合我 convert src.png input.gif -gravity Center -composite des.gif; 如您所见,当存在黑色块时,输出是意外的 并且des.gif没有设置动画 左边是des.gif右边是input.gif 编辑 这是我的测试文件 您有77帧。但是第一帧比其他帧小得多。从Imagemagick(6.9.9.13 Q16 M

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

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

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

编辑
这是我的测试文件

您有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

如果使用Imagemagick 7,则将转换为magick。

由于我们无法看到您开始使用的图像,因此几乎无法帮助…@MarkSetchell我更新我的问题。请发布3张单独的图片-正好两张输入图像和一张输出图像。似乎我无法上载这些图片。如您所见,右边是
input.gif
,我使用
设备框架来包装它。没有您的两个输入图像,我们无法测试并找出问题所在。我们也不知道你所说的“包裹”是什么意思。你是说叠加在另一个上面吗?一幅图像是否有透明度?
magick image.png null:\(input.gif-coalesce-resize 1080x1920!\)-gravity Center-layers composite des.gif
对我不起作用,它一直在运行,没有结果。调整77幅图像的大小需要很长时间。耐心点,我需要几分钟的时间。应该结束了。您对Imagemagick的确切版本是什么。如果IM 6,则使用convert代替magick。如果我是7岁,那么你必须像你写的那样使用魔法。如果图像的名称与您所写的不符,或者与我下载的内容不符,您可能需要更改图像的名称。很抱歉,在上传到google设备之前,我调整了图像的大小,因此测试文件错误。现在我再次上传。很抱歉,我将新链接添加到问题。添加-层优化-层合成后。对我来说,它导致了一个损坏的gif,我已经在Imagemagick对话服务器bug论坛上报告了它。但请尝试:
magick-limit area 0 image.png null:\(input.gif-coalesce\)-重心-图层组合-图层优化des.gif