PHP で GIF 画像が動的画像かどうかを判断する方法、
この記事の例では、PHP が gif 画像が動的画像であるかどうかを判断する方法について説明します。参考のためにみんなで共有してください。具体的な方法は以下の通りです
PHP を使用して gif 画像が動的画像 (アニメーション) であるかどうかを判断するにはどうすればよいでしょうか? 最初に思い浮かぶのは、getimagesize() 関数を使用して type 値を調べ、それらがすべて gif であることを確認することです。という方法は実現不可能です。以下は筆者がインターネットで見かけた、GIFがアニメーション画像かどうかを判定する関数です。投稿してみんなとシェアしましょう
例は次のとおりです:
コードをコピーします コードは次のとおりです:
/*
* 写真が動的な写真(アニメーション)かどうかを判断します
*/
関数 isAnimatedGif($filename) {
$fp=fopen($filename,'rb');
$filecontent=fread($fp,filesize($filename));
fclose($fp);
return strpos($filecontent,chr(0x21).chr(0xff).chr(0x0b).'NETSCAPE2.0')===FALSE?0:1;
}
または、次のようにしてください:
PHP を使用して、gif 画像がアニメーション化されているかどうか (複数のフレーム) を判断します
コードをコピーします コードは次のとおりです:
関数 IsAnimatedGif($filename)
{
$fp = fopen($filename, 'rb');
$filecontent = fread($fp, filesize($filename));
fclose($fp);
return strpos($filecontent,chr(0x21).chr(0xff).chr(0x0b).'NETSCAPE2.0') === FALSE?0:1;
}
echo IsAnimatedGif("51windows.gif");
?>
例 2
gif アニメーションは gif89 形式であり、ファイルの先頭が gif89 であることがわかりました。ただし、多くの透明な画像でも gif89 形式が使用されています
GOOGLE: ファイルに chr(0×21).chr(0xff).chr(0×0b).'NETSCAPE2.0' が含まれているかどうかを確認できます
chr(0×21).chr(0xff)はgif画像の拡張機能部分のヘッダー、「NETSCAPE2.0」は拡張機能を実行するプログラムの名前です
プログラムコードは以下の通りです
コードをコピーします コードは次のとおりです:
機能チェック($image){
$content= file_get_contents($image);
if(preg_match("/".chr(0x21).chr(0xff).chr(0x0b).'NETSCAPE2.0'."/",$content)){
true を返します;
}その他{
false を返します;
}
}
if(check('/home/lyy/luoyinyou/2.gif')){
echo「本当にアニメーションしていますね」;
}その他{
echo「アニメーションではありません」;
}
?>
この時点で読み取られたデータ ストリームには chr(0×21).chr(0xff).chr(0×0b).'NETSCAPE2.0' が含まれているため、テストでは 1024 バイトの読み取りで十分であることがわかりました。
この記事で説明した内容が皆様の PHP プログラミング設計に役立つことを願っています。
http://www.bkjia.com/PHPjc/914052.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/914052.html技術記事 PHP が GIF 画像が動的画像であるかどうかを判断する方法 この記事では、GIF 画像がアニメーション画像であるかどうかを判断する PHP の方法の例について説明します。参考のためにみんなで共有してください。具体的な方法は以下の通りです...