おひさしぶりです。
タイトルの通り、チェック対象のファイルがアニメーションgifかそうじゃないかのチェックプログラムを・・・
で、とほほさんのGIFフォーマットの詳細を参考にしてみました。
/** * アニメーションGIFかチェック * * @params string $img_file 画像ファイル(画像ファイルまでのPATH付き) * @return bool true:アニメーションGIF false:それ以外 */ function checkAnimationGif($img_file) { if (!file_exists($img_file)) { // ファイルが無い return false; } if (!($fp = fopen($img_file, "rb"))) return false; $head = fread($fp, 6); if (!preg_match("/^GIF89a/", $head)) { // GIF89a 以外 return false; } // カウント初期化 $gce_cnt = 0; while (!feof($fp)) { if (bin2hex(fread($fp, 1)) != "21") continue; switch (bin2hex(fread($fp, 2))) { /* // 2014-11-06 削除 case "ff0b": // Application Extension fclose($fp); return true; break; */ case "f904": // Graphic Control Extension $gce_cnt++; if ($gce_cnt > 1) { fclose($fp); unset($gce_cnt); return true; } break; } } fclose($fp); unset($gce_cnt); return false; }
多分これで、チェックできるはず・・・
追記:2014-11-06
adobeのフォトショップで作成されたgifでApplication Extensionが含まれる通常のgifが作成されていることがわかりましたので
上記のソースを修正しました。