是否可以检查GIF图像是否具有PHP或Java动画?

问题描述 投票:4回答:3

您知道GIF文件支持动画,但是GIF图像不一定必须在其上具有动画。

是否可以使用php或java检查GIF图像是否具有动画?

谢谢。

java php gif animated-gif
3个回答
2
投票
<?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"; } ?>

只需将$ img变量编辑为要测试的任何图像(例如image.gif,image.jpg)。


1
投票
<?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"; } } ?>

如果需要,可以很容易地对其进行修改以计算帧数。

See Here

0
投票
public function getNumFramesFromGif(string $url): int{ $image = file_get_contents($url); $imagick = new \Imagick(); $imagick->readImageBlob($image); $numFrames = $imagick->identifyFormat("%n"); //https://www.php.net/manual/en/imagick.identifyformat.php https://davidwalsh.name/detect-gif-animated return $numFrames; }

如果返回1,则不进行动画处理。

由于this之类的“陷阱”,我不使用Imagick之类的库来编码函数时会很警惕。
© www.soinside.com 2019 - 2024. All rights reserved.