ImageMagick:如何将一个gif的每帧延迟应用于另一个gif?

时间:2019-02-02 00:00:11

标签: imagemagick animated-gif

我有一个工作流程,我从客户端获取gif,将其从gif转换为我可以处理的sprite工作表(png),然后将其转换回gif以发送回去。客户的gif帧延迟很重要,所以我需要保留它们。

有没有一种方法可以使用ImageMagick命令行实用程序在一个gif中捕获帧延迟,然后将其应用于另一个gif?我正在通过Windows上的.bat批处理文件来执行这些操作。这些gif具有相同的尺寸和帧数。

1 个答案:

答案 0 :(得分:1)

在Imagemagick 6中,您可以使用字符串格式%T来获取动画延迟。将其放入变量中,然后将其用于下一个动画的延迟。参见https://imagemagick.org/script/escape.php

convert -delay 100 rose: rose: rose: -loop 0 anim.gif

convert anim.gif -format "%T\n" info: | head -n 1
100

请注意,如果没有管道连接到-n 1头,Imagemagick将为每帧重复一次延迟。

对于Imagemagick 7,请使用magick而不是进行转换。在Windows .bat中,将%翻倍为%%。

对于Windows,您可能需要找到一个等效的工具来使-n 1开头,或者仅解析%T的文本输出以从每一帧的所有重复中仅提取一个值。