Is there a way to check if a GIF image has animation with PHP or Java?

You know that GIFs support animation, but a GIF image does not have to contain animation.

Is there a way to check if a GIF image has animation using php or java?

Thanks.

+4
source share
2 answers

Here is a little PHP script that should be able to determine if an image is an animated gif or not. I tested it and it works for me.

<?php $img="your_image"; $file = file_get_contents($img); $animated=preg_match('#(\x00\x21\xF9\x04.{4}\x00\x2C.*){2,}#s', $file); if ($animated==1){ echo "This image is an animated gif"; } else { echo "This image is not an animated gif"; } ?> 

Just change the $ img variable to whatever image you want to check (for example, image.gif, image.jpg).

+2
source

There is a short code snippet on the php manual page of the imagecreatefromgif () functions, which should be what you need:

 <?php function is_ani($filename) { $filecontents=file_get_contents($filename); $str_loc=0; $count=0; while ($count < 2) # There is no point in continuing after we find a 2nd frame { $where1=strpos($filecontents,"\x00\x21\xF9\x04",$str_loc); if ($where1 === FALSE) { break; } else { $str_loc=$where1+1; $where2=strpos($filecontents,"\x00\x2C",$str_loc); if ($where2 === FALSE) { break; } else { if ($where1+8 == $where2) { $count++; } $str_loc=$where2+1; } } } if ($count > 1) { return(true); } else { return(false); } } exec("ls *gif" ,$allfiles); foreach ($allfiles as $thisfile) { if (is_ani($thisfile)) { echo "$thisfile is animated<BR>\n"; } else { echo "$thisfile is NOT animated<BR>\n"; } } ?> 

It could be easily changed to count the number of frames if you need to.

See here

+1
source

Source: https://habr.com/ru/post/1389719/


All Articles