swfed v0.15 release (GIF 対応)

以前から要望の多かった GIF 画像入れ替えに対応しました。

GIF 入れ替え

↓ これで入れ替えられます。

replaceGIFData($image_id, $gif_data);

既存の PNG, Jpeg 入れ替えと同じインターフェースです。

不具合修正

変数未初期化のバグを修正しました。
幸い脆弱性には繋がりません*1が、これが原因で画像入れ替え処理に
失敗する事がありました。 罠を踏んでいる人がいたら、ほんとごめんなさい。

具体的には、失敗すると入れ替えたはずの画像のスペースが真っ赤になります。
Flash Player は画像データを認識できない場合、赤く塗りつぶすので。

画像入れ替えページ

png か jpg かをボタンで指定するのが面倒という声を頂いたので、
ボタンを一つにまとめて、画像フォーマットの自動判定を行うようにしました。

function detect_image_ext(&$imagedata) {
    $image_sig = substr($imagedata, 0, 0x10);
    if (strpos($image_sig, 'JFIF') === 6) {
        $ext = '.jpg';
    } elseif (strpos($image_sig, 'PNG') === 1) {
        $ext = '.png';
    } elseif (strpos($image_sig, 'GIF') === 0) {
        $ext = '.gif';
    } else {
        $ext = false;
    }
    return $ext;
}

間違えてたらごめんなさい。(´Д`;)

制限事項

テスト中に差し替えに失敗する GIF 画像を見つけました。
でも、IE でも表示できない(Firefox だと表示できる)画像でしたので、
対応は後回しにさせて下さい。

*1:と思っていたけど、圧縮する事でサイズが通常とは逆に増えるパターンだと危ないかも… zlib伸張後のフレームオフセットを合わせてとか器用な事って実際できるのかな…