文件上传拒绝GIF动画(使用PHP / Zend框架)

我想我可能希望用户能够上传静态GIF文件,但没有动画的。 说对角色的,因为他们可能看起来......不专业和分心。 有没有办法在PHP或Zend Framework中,我可以验证的文件上传方式?

--------------解决方案-------------

您可以使用GD库来保存图像。 随着文件的GIF类型是节省从GIF文件,如果它只是动画第一帧。 见imagegif函数更多信息如何使用它。

形成PHP:imagecreatefromgif - 手册:

I wrote two alternate versions of ZeBadger's is_ani() function, for determining if a gif file is animated

Original:
http://us.php.net/manual/en/function.imagecreatefromgif.php#59787

The first alternative version is just as memory intensive as the original, and more CPU intensive, but far simpler:

<?php
function is_ani($filename) {
return (bool)preg_match('#(\x00\x21\xF9\x04.{4}\x00\x2C.*){2,}#s', file_get_contents($filename));
}
?>

The second alternative is about as CPU intensive as the original function, but uses less memory (and may also result in less disk activity)

<?php
function is_ani($filename) {
if(!($fh = @fopen($filename, 'rb')))
return false;
$count = 0;
//an animated gif contains multiple "frames", with each frame having a
//header made up of:
// * a static 4-byte sequence (\x00\x21\xF9\x04)
// * 4 variable bytes
// * a static 2-byte sequence (\x00\x2C)

// We read through the file til we reach the end of the file, or we've found
// at least 2 frame headers
while(!feof($fh) && $count < 2)
$chunk = fread($fh, 1024 * 100); //read 100kb at a time
$count += preg_match_all('#\x00\x21\xF9\x04.{4}\x00\x2C#s', $chunk, $matches);

fclose($fh);
return $count > 1;
}
?>

分类:php 时间:2015-03-15 人气:0
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 1.397 (s). 10 q(s)