我该如何使用Imagemagick来确定GIF的帧率?

3
我正在使用Imagemagick将gif转为对应的一系列jpgs,并尝试确定系列中每个jpg出现的时间。 从How do I detect an animated GIF's ticks per second?中抄袭: identify -format "%T ticks: %f: Frame[%s] %m %wx%h %P%O %r %z-bit\n" tree.gif
4 ticks:  tree.gif: Frame[0]  GIF 247x175 247x175+0+0 PseudoClassRGBMatte 8-bit
4 ticks:  tree.gif: Frame[1]  GIF 247x175 247x175+0+0 PseudoClassRGBMatte 8-bit
4 ticks:  tree.gif: Frame[2]  GIF 247x175 247x175+0+0 PseudoClassRGBMatte 8-bit
4 ticks:  tree.gif: Frame[3]  GIF 247x175 247x175+0+0 PseudoClassRGBMatte 8-bit
4 ticks:  tree.gif: Frame[4]  GIF 247x175 247x175+0+0 PseudoClassRGBMatte 8-bit
4 ticks:  tree.gif: Frame[5]  GIF 247x175 247x175+0+0 PseudoClassRGBMatte 8-bit

并且 identify tree.gif 给了我

tree.gif[0] GIF 247x175 247x175+0+0 8-bit PseudoClass 256c 1.923MB 0.000u 0:00.000
tree.gif[1] GIF 247x175 247x175+0+0 8-bit PseudoClass 256c 1.923MB 0.000u 0:00.000
tree.gif[2] GIF 247x175 247x175+0+0 8-bit PseudoClass 256c 1.923MB 0.000u 0:00.000
tree.gif[3] GIF 247x175 247x175+0+0 8-bit PseudoClass 256c 1.923MB 0.000u 0:00.000
tree.gif[4] GIF 247x175 247x175+0+0 8-bit PseudoClass 256c 1.923MB 0.000u 0:00.010
tree.gif[5] GIF 247x175 247x175+0+0 8-bit PseudoClass 256c 1.923MB 0.000u 0:00.010
tree.gif[6] GIF 247x175 247x175+0+0 8-bit PseudoClass 256c 1.923MB 0.000u 0:00.010
...

有人能翻译这个输出的内容告诉我每秒帧数或每帧出现的时间吗?如果能使用RMagick使其正常工作,将得到额外的奖励。

1个回答

11
有些复杂。首先,您需要使用%T%s转义来查看帧数和延迟(以厘秒为单位),而不是普通的identify命令。其次,从一帧到下一帧的延迟是不同的,因此您需要准备处理动画GIF在始终端没有统一的“帧速率”的情况。
以下是一个示例命令:identify -format "Frame %s: %Tcs\n" A.gif 更多信息请参见:
  1. http://imagemagick.org/Usage/anim_basics/
  2. http://imagemagick.org/script/escape.php

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