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

标签 imagemagick animated-gif

我有一个工作流程,我从客户端获取 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/

相关文章:

php - 找到相交线之间的所有四边形?

php - 在 pgp 脚本中使用 Imagemagick 以正确的格式保存图像

ios - 通过 Swift 3.0 生成和导出动画 gif?

jQuery .load();不处理图像

comparison - 使用ImageMagick对图像进行均等测试

ruby-on-rails - 如何检测没有扩展的图像的扩展?

html - 悬停时带有动画 gif 的菜单

screen-scraping - 如何录制屏幕并保存为gif动画?

python - 使用 Tkinter 的动画 gif 没有透明度

PHP 在没有 ImageMagick 的情况下将 SVG 转换为 PNG