PHP检测gif图片是否为动态图片
当我们使用php自带的getimagesize()函数来判断一个gif图片是否为动态(动画)时,发现无法判别是否为动态的效果。本文介绍了php是如何判断gif图片是否为动画的方法,具体步骤如下:
经过GOOGLE搜索可以查到,gif动态图的文件中包含:chr(0×21).chr(0xff).chr(0×0b).‘NETSCAPE2.0’。所以,我们就可以使用fopen()和字符串系列函数来检测文件中是否包含这些字符串就可以判断该gif图是否动态的。
编码实现如下:
|
|
上述代码就已经可以检测一个gif图是否为动画的了,但是还是可以在优化的。
因为实际上 chr(0×21).chr(0xff).chr(0×0b).‘NETSCAPE2.0’ 只在文件头部出现,可以 echo来看看 ,但不是最头部,是在头部的某一个位置,所以,严格来说需要读取一部分文件,但不用全部,这样可以加快速度和节省内存。
经测试,读取1024字节足够了,因为此时读取的数据流中正好包含了 chr(0×21).chr(0xff).chr(0×0b).‘NETSCAPE2.0’.
代码优化后:
|
|
这样就可以很好的判断一个gif图是否为动画了,而且很高效。
(end)
- 原文作者:maratrix
- 原文链接:https://maratrix.cn/post/2014/10/15/check_gif_picture/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。