본문 바로가기

카테고리 없음

[PHP] gif 가 애니메이션인지, 움직이는 gif 인지 확인

http://php.net/manual/en/function.imagecreatefromgif.php#104473




1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
An updated is_ani based on issues reported here and elsewhere
 
<?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) (some variants may use \x00\x21 ?)
    
    // 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($fh1024 * 100); //read 100kb at a time
        $count += preg_match_all('#\x00\x21\xF9\x04.{4}\x00(\x2C|\x21)#s'$chunk$matches);
   }
    
    fclose($fh);
    return $count > 1;
}
?>
cs