【问题标题】:ImageMagick: How to apply one gif's per-frame delays to another gif?ImageMagick:如何将一个 gif 的每帧延迟应用于另一个 gif?
【发布时间】:2019-06-26 13:42:39
【问题描述】:

我有一个工作流程,我从客户那里获取 gif,将它们从 gif 转换为我可以处理的精灵表 (png),然后将它们转换回 gif 以发回。客户端在其 gif 中的帧延迟很重要,因此我需要保留它们。

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

【问题讨论】:

    标签: imagemagick animated-gif


    【解决方案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
    

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

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

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

    【讨论】:

      猜你喜欢
      • 2018-09-05
      • 1970-01-01
      • 1970-01-01
      • 2017-04-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-25
      • 2017-01-27
      相关资源
      最近更新 更多