3

重複の可能性:
PNG がアニメーション化されているかどうかをプログラムで判断できますか?

APNG は PNG と下位互換性があります。apng と png ファイルを 16 進エディタで開いたところ、最初の数バイトは同じに見えます。ユーザーがこれらの形式のいずれかをアップロードした場合、その形式が実際に何であるかをどのように検出すればよいでしょうか? apng をブロックするいくつかのサイトでこれが行われているのを見てきました。

ImageMagick ライブラリがこれを簡単にしてくれると思いますが、(学習目的で) 画像処理ライブラリを使用せずに検出を行うとしたらどうでしょうか? ファイルが apng かどうかを示す特定のバイトを探すことはできますか?

どの言語でのソリューションも大歓迎です。

4

4 に答える 4

1

http://en.wikipedia.org/wiki/Apngから:

PNG および MNG 形式のユーザーと管理者の間では、APNG はあまり受け入れられませんでした。特に、PNG は単一の画像形式[2]であると考えられていました。APNG は、APNG を認識しないアプリケーションがそれらを無視するような方法で、PNG 補助チャンク内の後続のフレームを非表示にしますが、それ以外の場合、ソフトウェアがアニメーション化された画像とアニメーション化されていない画像を区別できるようにするための形式への変更はありません。[イタリック鉱山]

[2] 「PNG (Portable Network Graphics) 仕様、バージョン 1.1#8.4。複数画像拡張」

于 2011-01-16T15:21:45.690 に答える
1

PNG がアニメーション化されているかどうかをプログラムで判断できますか?の解決策を参照してください。: 文字列「acTL」を検索できます。

于 2011-01-16T19:33:28.097 に答える
0

APNGおよびPNGファイルの最初の数バイトの制御は簡単にバイパスできます。したがって、この方法は安全ではありません。ユーザーはファイルの16進コードを変更し、このコントロールを渡すことができます。

于 2011-01-16T13:50:44.190 に答える
0

ほとんどの Unix プラットフォームに既にインストールされている libmagic を使用できます。

于 2011-01-16T19:47:38.060 に答える