我有一个工作流程,我从客户端获取 gif,将它们从 gif 转换为我可以处理的 Sprite 表 (png),然后将它们转换回 gif 并发回。不过,客户 gif 中的帧延迟很重要,因此我需要保留它们。
有没有一种方法可以使用 ImageMagick 命令行实用程序获取一个 gif 中的帧延迟,并将它们应用到另一个 gif 中?我在 Windows 上通过 .bat 批处理文件执行这些操作。这些 GIF 具有相同的尺寸和帧数。
最佳答案
在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
请注意,如果不通过管道连接到 head -n 1,Imagemagick 将为每一帧重复一次延迟。
对于 Imagemagick 7,请使用 magick 而不是转换。在 Windows .bat 中,将 % 加倍为 %%。
对于 Windows,您可能需要找到一个与 head -n 1 等效的工具,或者只是解析 %T 的文本输出,以便从每一帧的所有重复中仅提取一个值。
关于ImageMagick:如何将一个 gif 的每帧延迟应用于另一 gif?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54488657/