我目前正在重新编写PHP中的现有工具,其他人开始优化图片,对于gif
图片,我将转换为png
,然后优化png file
。对于animated gifs
,我将浏览名为Gifsicle
的程序,该程序可以优化动画gif
图像。
在一些现有的代码库中,另一个人确定了带有文件扩展名gifgif
的动画gif图像,如下面的代码段所示,它们包含引用此gifgif
的所有代码。< / p>
我搜索了Google,我无法在任何地方找到gifgif
文件的提及,此外我从未听说过一个。
有人可以帮我弄清楚实际的扩展名gifgif
是否存在?是否可能嵌入animated gif
个文件?
代码......
$types = array("gif", "png", "gifgif", "jpg", "jpeg", "bmp");
和
if (substr($type, 0, 6) === "gifgif")
{
$type = "gifgif";
}
和
case "gifgif":
$dest_file .= ".gif";
$cmd = "/usr/bin/gifsicle -O2 $src_file > $dest_file";
exec($cmd, $return, $error);
答案 0 :(得分:2)
这不是标准扩展程序,您显示的代码似乎只关心文件扩展名。
据推测,您正在使用的系统的开发人员提出了该约定,并且该系统是独一无二的。
答案 1 :(得分:1)
gifgif
不是有效的扩展名 - 并且无论如何都不是检查文件是否为动画gif文件的有效方法。为了检查文件是否是动画gif,您需要实际解析文件的内容并检查帧头。这个功能可以简单地完成:
<?php
function is_ani($filename) {
return (bool)preg_match('#(\x00\x21\xF9\x04.{4}\x00\x2C.*){2,}#s', file_get_contents($filename));
}
?>
P.S。这不是我的功能,而是从http://php.net/manual/en/function.imagecreatefromgif.php借来的。同一篇文章中给出了另一个版本。该版本的函数以块的形式读取文件并检查每个单独的块,但是这种方法不正确,因为标头可能最终被分成两个块。