基于此处和其他地方报告的问题的 is_ani 更新
<?php
function is_ani($filename) {
if(!($fh = @fopen($filename, 'rb')))
return false;
$count = 0;
//动画 GIF 包含多个“帧”,每个帧都有一个标题,由以下组成:
// * 一个静态 4 字节序列 (\x00\x21\xF9\x04)
// * 4 个可变字节
// * 一个静态 2 字节序列 (\x00\x2C)(某些变体可能使用 \x00\x21?)
// 我们遍历文件,直到到达文件末尾或找到
// 至少 2 个帧标题
while(!feof($fh) && $count < 2) {
$chunk = fread($fh, 1024 * 100); //一次读取 100kb
$count += preg_match_all('#\x00\x21\xF9\x04.{4}\x00(\x2C|\x21)#s', $chunk, $matches);
}
fclose($fh);
return $count > 1;
}
?>