Imagemagick转换命令:为最后一帧设置延迟时间

25

我有一些命名为"_tmp*.png"的.png文件,我想用imagemagick的convert命令将它们转换成一个gif文件。因此我可以使用:

convert -delay 20 _tmp*.png result.gif

但是我希望最后一帧停留在屏幕上一段时间,这样人们就可以更清晰地看到动画的结尾。比如说,我想让最后一帧持续3秒钟,同时保持其他帧的延迟时间不变。我查阅了convert命令的文档,但似乎没有这样的选项。

那么,我该如何使用convert命令实现这个功能呢?

1个回答

44
你可以像这样做:
convert -delay 40 {1..9}.png -delay 300 10.png -delay 40 {11..14}.png animated.gif 

enter image description here

基本上,您可以在想要影响的图像之前设置延迟时间,并且它会保持设置状态,直到您更改为止。
如果您想设置可变延迟时间,以便第一个帧(即此处的黑色)和最后一个帧(即此处的黄色)显示更长时间,则可以执行以下操作:
convert -size 300x200 xc:black xc:red xc:lime xc:blue xc:cyan xc:magenta xc:yellow -set delay '%[fx:t==(n-1) || t==0 ? 400 : 40]' result.gif

enter image description here


1
Serchell: 谢谢! - user4976086
但是我的图像文件编号为_tmp%03d.png,其中数字范围从0到N,N取决于程序的输入,那么在这种情况下我该怎么做? - user4976086
抱歉,我不懂Python,也许可以参考这个链接:https://dev59.com/XmIk5IYBdhLWcg3wAJ2E#19683794 或者这个链接:http://stackoverflow.com/a/30071309/2836621。 - Mark Setchell
1
我正在Windows10上运行这个程序。使用命令:magick convert -delay 40 {1..11}.png -delay 3000 12.png logo.gif,我只得到了gif的最后一帧。语法{1..11}.png似乎不起作用。 - Fuczak
1
在您的情况下,您也可以使用 convert -delay 40 *.png -delay 2960 12.png logo.gif - Yonatan N
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接