[メモ]アニメーションgifのチェック[php]

おひさしぶりです。

タイトルの通り、チェック対象のファイルがアニメーション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が作成されていることがわかりましたので
上記のソースを修正しました。

スポンサーリンク

ぼちぼち復旧中

なんとなく忙しくて、手をつけていなかったblogの設定を直し始めますた。

たとえば、google Analyticsのプラグイン作ったりorz
google Adsense?を埋め込むとかはまだだけどorz

スポンサーリンク

HDDが死んだ・・・そして最初から鯖作り直し

HDDの価格が高騰している中、HDDが壊れたorz
仕方が無いのでHDDを購入して、
CentOS6、Apache2.2.21、PHP5.3.8、MySQL5.5.17、Postgresql9.1.1
を入れました、、、

OSの入れ方が変わったおかげで十数回インストールしなしてみたり、、
Mysql5.5系からcmakeで入れるようになったために、またしても入れ方が分からず何回か間違った入れ方をしていたし、、でどこかのblogでcmakeのオプションの書き方が書いてあったのでそれを参考に調べなおして入れることができたよ;_;

あとは、ちまちま、postfixとか設定しなおしたりと、、
postfixとかは正規表現でメールアドレスをの割り振れるように設定とか

Postgresql9.1系から簡単にクラスターが出来るとか・・・

スポンサーリンク