note 88005 added to function.imagecreatefromgif
| From: | frank at huddler dot com | Date: | Mon, 05 Jan 2009 23:11:17 +0000 |
| Subject: | note 88005 added to function.imagecreatefromgif | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-148866@lists.php.net to get a copy of this message | ||
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;
}
?>
----
Server IP: 208.69.120.35
Probable Submitter: 99.4.73.65
----
Manual Page -- http://www.php.net/manual/en/function.imagecreatefromgif.php
Edit -- https://master.php.net/note/edit/88005
Del: integrated -- https://master.php.net/note/delete/88005/integrated
Del: useless -- https://master.php.net/note/delete/88005/useless
Del: bad code -- https://master.php.net/note/delete/88005/bad+code
Del: spam -- https://master.php.net/note/delete/88005/spam
Del: non-english -- https://master.php.net/note/delete/88005/non-english
Del: in docs -- https://master.php.net/note/delete/88005/in+docs
Del: other reasons-- https://master.php.net/note/delete/88005
Reject -- https://master.php.net/note/reject/88005
Search -- https://master.php.net/manage/user-notes.php