如何确定.gif动画的长度(以毫秒为单位)
ImageMagick从该identify
命令可以给出这样的信息:
$ identify -verbose file.gif | grep 'Elapsed time'
Elapsed time: 0:01.080
Elapsed time: 0:01.150
Elapsed time: 0:01.230
...
Elapsed time: 0:04.250
Elapsed time: 0:04.330
Elapsed time: 0:04.399
Elapsed time: 0:04.480
印刷应该是动画的总长度的最后一行。
运行三次给出已用时间:0:02.780,已用时间:0:02.840和已用时间:0:02.810。 – Prinzhorn 2016-04-11 16:48:17
接受的答案没有给出确切的结果。 Elapsed time
就像一个真实的世界时钟,而ImageMagick运行动画。你想要的是每个帧的Delay
字段,并总结它们。
$ identify -verbose fail.gif | grep Delay
Delay: 10x100
Delay: 10x100
Delay: 10x100
Delay: 10x100
Delay: 15x100
Delay: 10x100
Delay: 10x100
Delay: 10x100
Delay: 10x100
Delay: 10x100
Delay: 10x100
Delay: 10x100
Delay: 10x100
Delay: 10x100
Delay: 10x100
Delay: 10x100
Delay: 10x100
Delay: 10x100
Delay: 10x100
Delay: 10x100
Delay: 10x100
Delay: 33x100
Delay: 10x100
Delay: 10x100
Delay: 10x100
其中33x100
是延迟330ms。
由马克·瑟特查编辑
实际上,你可以提取延迟参数某种程度上更外科手术(比使用grep
)与%T
逃生:
identify -format "%T\n" animation.gif
8
8
8
8
8
8
8
8
8
8
11
11
11
11
11
11
11
26
,并获得总计awk
是这样的:
identify -format "%T\n" anomation.gif | awk '{t+=$0} END{print t " centiseconds"}'
183 centiseconds
我加了一点 - 我希望你不介意。也有一票! – 2016-04-12 08:44:40
@MarkSetchell谢谢。对于术语“厘秒”也是如此;) – Prinzhorn 2016-04-12 09:51:31
我试过ImageMagick identify
但它没有给我正确的持续时间。
我发现使用ExifTool
exiftool -Duration image.gif
它会打印出在几秒钟时间的另一个可靠的方法:
Duration : 0.48 s
在什么编程语言/平台/环境? – 2012-03-21 20:48:15
不太关心环境,因为我并不真正需要这个值,我只需要确定gif需要在毫秒内播放一次的大致时间。但是,我正在实现我将从javascript中获得的数字。 – j00b 2012-03-21 20:52:57
如果您不关心以编程方式执行此操作,那么这个问题是无关紧要的。 – 2012-03-21 20:53:45