我希望将gif背景更改为透明的,并使用ImageMagick的以下命令:
转换input.gif -transparent白色output.gif
然而,输出有重影效应,后期帧与以前的帧重叠。
//对不起,我没有资格贴我自己的照片。这里有一个例子:http://tieba.baidu.com/p/1090763568
怎样才能使它们不重叠呢?或者说,没有幽灵效应?
发布于 2015-05-04 09:04:10
我认为“答案”是,这是一个糟糕的动画制作为您的目的。您可以看到,该动画由12帧组成,ImageMagick如下所示:
identify anim.gif
anim.gif[0] GIF 400x350 400x350+0+0 8-bit sRGB 256c 106KB 0.000u 0:00.000
anim.gif[1] GIF 1x1 400x350+0+0 8-bit sRGB 256c 106KB 0.000u 0:00.000
anim.gif[2] GIF 226x152 400x350+85+8 8-bit sRGB 256c 106KB 0.000u 0:00.000
anim.gif[3] GIF 218x152 400x350+89+8 8-bit sRGB 256c 106KB 0.000u 0:00.000
anim.gif[4] GIF 210x152 400x350+93+8 8-bit sRGB 256c 106KB 0.000u 0:00.000
anim.gif[5] GIF 202x152 400x350+97+8 8-bit sRGB 256c 106KB 0.000u 0:00.000
anim.gif[6] GIF 194x152 400x350+101+8 8-bit sRGB 256c 106KB 0.000u 0:00.000
anim.gif[7] GIF 194x152 400x350+101+8 8-bit sRGB 256c 106KB 0.000u 0:00.000
anim.gif[8] GIF 202x152 400x350+97+8 8-bit sRGB 256c 106KB 0.000u 0:00.000
anim.gif[9] GIF 210x152 400x350+93+8 8-bit sRGB 256c 106KB 0.000u 0:00.000
anim.gif[10] GIF 218x152 400x350+89+8 8-bit sRGB 256c 106KB 0.000u 0:00.000
anim.gif[11] GIF 226x152 400x350+85+8 8-bit sRGB 256c 106KB 0.000u 0:00.000您可以将图像分割成其组成帧,并使白色区域透明如下:
convert anim.gif -transparent none frame-%02d.gif
-rw-r--r-- 1 mark staff 9777 4 May 11:11 frame-11.gif
-rw-r--r-- 1 mark staff 9732 4 May 11:11 frame-10.gif
-rw-r--r-- 1 mark staff 9681 4 May 11:11 frame-09.gif
-rw-r--r-- 1 mark staff 9835 4 May 11:11 frame-08.gif
-rw-r--r-- 1 mark staff 9533 4 May 11:11 frame-07.gif
-rw-r--r-- 1 mark staff 9479 4 May 11:11 frame-06.gif
-rw-r--r-- 1 mark staff 9986 4 May 11:11 frame-05.gif
-rw-r--r-- 1 mark staff 9907 4 May 11:11 frame-04.gif
-rw-r--r-- 1 mark staff 10070 4 May 11:11 frame-03.gif
-rw-r--r--@ 1 mark staff 10099 4 May 11:11 frame-02.gif
-rw-r--r-- 1 mark staff 43 4 May 11:11 frame-01.gif
-rw-r--r--@ 1 mark staff 15917 4 May 11:11 frame-00.gif你也可以像这样蒙太奇所有的帧:
convert anim.gif -transparent white miff:- | montage -tile 3x -frame 5 - montage.jpg

如果您试图将框架与background的处理方法放在一起,您将丢失只出现在第一个帧中的单词welcome:
convert -dispose background frame-0* a.gif

如果您尝试在动画前将第一帧(因此您有“欢迎”)与其他帧合成,您将得到一个黑,因为男孩和女孩的角色也出现在第一帧中:
convert frame-00.gif frame-02.gif -geometry +85+8 -composite x.gif

我看到的唯一解决方案是把第一个画面放到Photoshop中,移除男孩和女孩,然后重建动画……但话又说回来,我不是动画专家,现在所有的帧都“在桌面上”,其他人可能会告诉你一个更简单的方法。
发布于 2015-05-04 05:59:48
如果使用Gimp编辑它,有一个选项可以更改处理方法以替换(“未指定的帧处理:每层一个帧(替换)”,以便在完全清除前一个帧后呈现每个帧)。
但是,如果您不想一次一个地编辑每个文件,使用另一个程序,我已经为我创建了一个ruby脚本来修复这个问题(如果您需要的话,可以批量修复)。我发现的唯一方法是对ImageMagick使用的处理方法进行二进制替换,使之与Gimp使用的方法的值相同(“替换”,9:据我所知,这是唯一在具有透明背景的动画gifs上工作的方法)。注意:要运行脚本,您必须安装ruby (如果没有)并编辑您想要处理的文件名。
https://stackoverflow.com/questions/23275123
复制相似问题