2012-01-11 13 views
2

私はpngに変換し、次にpng fileを最適化するために、他の人が画像を最適化するために起動した既存のツールをPHPで書き直しています。gifの画像については、 animated gifsについては、アニメーションgifイメージを最適化できるGifsicleというプログラムを実行します。アニメーションGIFファイルにGIFGIFが埋め込まれていますか?

一部の既存のコードベースでは、下のスニペットに示されているように、ファイル拡張子がgifgifのアニメーションGIF画像が特定されました。これらのコードには、gifgifを参照するすべてのコードが含まれています。

私はGoogleを検索していますが、gifgifというファイルはどこにも見つかりませんでした。また、私の人生では一度も聞いたことがありません。

誰かが実際の内線番号gifgifが存在するかどうかわかりませんか?それはanimated gifファイルに埋め込まれている可能性がありますか?

コード...

$types = array("gif", "png", "gifgif", "jpg", "jpeg", "bmp"); 

if (substr($type, 0, 6) === "gifgif") 
{ 
    $type = "gifgif"; 
} 

case "gifgif": 
    $dest_file .= ".gif"; 
    $cmd = "/usr/bin/gifsicle -O2 $src_file > $dest_file"; 
    exec($cmd, $return, $error); 
+2

xeがアニメーションではなくアニメーション化されたGIFを区別できるように、その人のようなサウンドが作っていました。 – Piskvor

答えて

2

これは、標準の拡張機能ではなく、あなたが表示されたコードは、ファイルの拡張子を気にするように見えます。

あなたが使用しているシステムの開発者は、このシステムに固有のものであると思われます。

+0

あなたは正しいです、私はimagemagickがアニメーションgif上のファイル拡張子として 'GIFGIFGIFGIFGIFGIFGIFGIF'を返すことを確認しました。 – CodeDevelopr

+0

実際にもっと多くのテストで私はImageMagickが' GIF x Number of frames'私の画像は7フレームであったので、 'GIFGIFGIFGIFGIFGIFGIF'を記録し、コードは少なくとも2つの' GIFGIF'があることを確認して、2つ以上を 'GIFGIF'として保存します。 – CodeDevelopr

1

gifgifは有効な拡張子ではありません。また、ファイルがアニメーションgifファイルであるかどうかを確認する有効な方法ではありません。ファイルがアニメーションGIFであるかどうかを確認するには、実際にファイルの内容を解析し、フレームヘッダーを確認する必要があります。この機能は、簡単にそれを行います:

<?php 
function is_ani($filename) { 
    return (bool)preg_match('#(\x00\x21\xF9\x04.{4}\x00\x2C.*){2,}#s', file_get_contents($filename)); 
} 
?> 

P.S.これは私の機能ではありませんが、http://php.net/manual/en/function.imagecreatefromgif.phpから借りたものです。同じポストに別のバージョンがあります。このバージョンの関数は、ファイルをチャンクで読み取り、個々のチャンクをチェックしますが、ヘッダーが2つのチャンクに分割される可能性があるため、このアプローチは正しく行われません。

+0

私は手作業で画像を取得しました。拡張子。 GIF画像ではアニメーションGIFでGIFを返します.GIFGIFGIFGIFGIFGIFGIFを返します。出力を保存していることがわかります.GIFGIFGIFGIFGIFGIFの場合は、gifgifを取得しています – CodeDevelopr

+0

これは実際にimagemagickでチェックされています彼はそれがチェックされ、アニメーションgif – CodeDevelopr

+0

Okであることが確認された後、アニメーション画像のための 'gifgif'を保存するだけです、それは意味をなさないかもしれません。彼はファイル拡張子を使用していませんが、imagemagicによって返されたファイルタイプは –

関連する問題