如何检测动态GIF的每秒帧数?

7

7
一个图书馆怎么会是“一吨”呢? - Matt Ball
2
@Bears:一个鲜为人知的事实是,当ImageMagick库的源代码以12磅字体在每边有1英寸边距的重量级8.5x11英寸纸张上打印时,它的重量大约为2,106磅。;-) - Josh
@Bears 我相信我还需要libmagick9-dev,这是一个比较重的依赖项(总共有74个软件包)。 - Elbert Alias
我有点怀疑,因为libmagick9-dev看起来非常像一个开发库 - “该软件包包括编译使用libMagick的程序所需的头文件和静态库。” [来源] (http://packages.ubuntu.com/dapper/libmagick9-dev) - Matt Ball
@Bears 我正在按照这里的说明进行操作:http://www.php.net/manual/en/imagick.setup.php#83715。 @Pekka的解决方案似乎更简单,所以我会选择它。 - Elbert Alias
显示剩余2条评论
2个回答

8
我认为ImageMagick确实是您的最佳选择。
以下是对动画GIF文件运行identify filename.gif命令的结果:
gif.gif[1] GIF 350x350 350x350+0+0 8-bit PseudoClass 256c 145KB 0.000u 0:00.003
gif.gif[2] GIF 350x350 350x350+0+0 8-bit PseudoClass 256c 145KB 0.000u 0:00.006
gif.gif[3] GIF 350x350 350x350+0+0 8-bit PseudoClass 256c 145KB 0.000u 0:00.010

这并不会给你帧速率 - 这是好的,因为动画GIF没有全局帧速率,它们在帧之间有一个单独的帧速率。


更好了!这正是我想要的。 - Elbert Alias

6

您可以自定义ImageMagick的identify应向您显示的信息格式:

identify \
      -format "%T ticks:  %f: Frame[%s]  %m %wx%h %P%O %r %z-bit\n" \
       anim.gif

那应该就行了。

示例输出:

 50 ticks:  anim.gif: Frame[0]  GIF 128x128 128x128+0+0 PseudoClass sRGB Matte 8-bit
 10 ticks:  anim.gif: Frame[1]  GIF 128x128 128x128+0+0 PseudoClass sRGB Matte 8-bit
 10 ticks:  anim.gif: Frame[2]  GIF 128x128 128x128+0+0 PseudoClass sRGB Matte 8-bit
 10 ticks:  anim.gif: Frame[3]  GIF 128x128 128x128+0+0 PseudoClass sRGB Matte 8-bit
 10 ticks:  anim.gif: Frame[4]  GIF 128x128 128x128+0+0 PseudoClass sRGB Matte 8-bit
 50 ticks:  anim.gif: Frame[5]  GIF 128x128 128x128+0+0 PseudoClass sRGB Matte 8-bit
 10 ticks:  anim.gif: Frame[6]  GIF 1x1 128x128+0+0 PseudoClass sRGB Matte 8-bit
 10 ticks:  anim.gif: Frame[7]  GIF 128x128 128x128+0+0 PseudoClass sRGB Matte 8-bit
 10 ticks:  anim.gif: Frame[8]  GIF 128x128 128x128+0+0 PseudoClass sRGB Matte 8-bit
 10 ticks:  anim.gif: Frame[9]  GIF 128x128 128x128+0+0 PseudoClass sRGB Matte 8-bit
 10 ticks:  anim.gif: Frame[10]  GIF 128x128 128x128+0+0 PseudoClass sRGB Matte 8-bit

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