12

ファイル全体をメモリに読み込まずに、画像の形式を確認する良い方法はありますか?

明らかに、これは形式によって異なります (特に TIFF ファイルに興味があります) が、ファイル全体を読み取ることなく、ファイルがどのような種類の画像形式であるかを判断するには、どのような手順が役立ちますか?

ボーナス: 画像が Base64 でエンコードされた文字列の場合はどうなりますか? デコードする前にそれを推測する信頼できる方法はありますか?

4

4 に答える 4

18

ほとんどの画像ファイル形式には、先頭に固有のバイトがあります。unixfileコマンドは、ファイルの先頭を調べて、ファイルに含まれるデータの種類を確認します。ファイル内のマジック ナンバーに関するウィキペディアの記事とmagicdb.orgを参照してください。

于 2008-09-09T19:52:34.970 に答える
5

確かにあります。他の人が述べたように、ほとんどの画像はある種の「魔法」で始まり、常にある種の Base64 データに変換されます。次にいくつかの例を示します。

ビットマップは次で始まりますQk3

JPEGはで始まります/9j/

GIF はR0l(2 番目の文字がゼロ) で始まります。

等々。さまざまな画像タイプを取得して、それらが何にエンコードされているかを理解することは難しくありません。一部の魔法は複数の魔法を持っているため、B64「変換コード」でそれらを考慮する必要があるため、注意してください。

于 2008-09-19T04:35:50.333 に答える
0

TIFF は、II または MM (Intel バイト順序または Motorolla) のいずれかで始まります。
TIFF 6 仕様はここからダウンロードでき、従うのは難しくありません。

于 2008-09-12T09:41:13.043 に答える
0

* nixfileコマンドラインで、またはファイルの最初のバイトを読み取る。ほとんどのファイルには、最初の数バイトに一意のヘッダーが含まれています。たとえば、TIFF のヘッダーは次のようになります。

0x00000000: 4949 2a00 0800 0000
TIFF ファイル形式の詳細については、特にこれらのバイトが何を表しているかを知りたい場合は、ここにアクセスしてください。

于 2008-09-09T20:30:50.167 に答える