4

我想知道 [如果有] 一种简单的方法来找出动画 gif 循环的次数,使用 PHP。

据我所知,此信息已编码到 gif 二进制文件的标头中(在类似于“NETSCAPE2.0”的字符串之后,值得一提),但我不知道如何阅读(无论是PHP 或任何文本编辑器,Sublime 给了我看起来像十六进制代码的东西,而 TextEdit 给了我废话)。

我假设我需要阅读文件查找上面的字符串,并希望它后面的文本是一个定义循环数的整数。也许?

有什么建议么?我很乐意玩弄任何疯狂的想法!

谢谢。

4

3 回答 3

2

这里有一些关于 gif 格式的信息。它似乎包括有关动画的信息:

http://giflib.sourceforge.net/whatsinagif/bits_and_bytes.html

这更具体地说明了您所询问的内容

http://giflib.sourceforge.net/whatsinagif/animation_and_transparency.html

于 2013-09-27T14:06:21.060 回答
1

我从如何使用 PHP 提取动画 GIF 的帧中找到了这个类GifFrameExtractor

您可以分别获得一组图像和一组持续时间:

$frameImages = $gfe->getFrameImages();
$frameDurations = $gfe->getFrameDurations();

结合这两种方法$frameImages*$frameDurations将为您提供一次迭代的时间。

其与动画开始到现在的时间进行比较。

于 2013-09-27T14:28:10.703 回答
0

如果不编写一些 js 代码,您将无法实现这一目标...

但你必须知道/计算 gif 的 1 个循环的时间长度。

在您的表格中添加

<input id='looper' type='hidden' name='loopingTime' value='0'/> 

添加功能

function loaded(){
    $('#looper').val($('#looper').val()+1);
    //assuming that calculating time with precision 1second is enough to determine number of loops
    setInterval(loaded,1000);
}

当 gif 开始动画时添加对此方法的调用

<img id="photo"
     onload='loaded(this.id)'
     src="a_gif_animation.gif"
     alt="this is some alt text"
     title="this is some title text" />

在您的操作方法中,您将有一个参数loopingTime包含 gif 播放的秒数,但您必须以某种方式计算 gif 循环时间。

于 2013-09-27T14:18:35.340 回答