EXIF ファイルとは何ですか?
EXIF は「Exchangeable Image File Format」の略で、1985 年に 日本カメラ工業会 (JCIA) によって最初に定義された定義です。情報技術産業協会 (JEITA)、本日現在。 EXIFとは、主にデジタルカメラやスキャナーで使用される画像・音声フォーマットの規格です。
EXIF 標準には、画像ファイルにタグ付けとメタデータ情報が含まれています。メタデータには、カメラのモデル、シャッター スピード、日付と時刻、絞り、製造元、露出時間、X 解像度、Y 解像度などの情報を含めることができます。通常、EXIF データはデフォルトで非表示になっています。 EXIF データを表示するには、画像表示アプリケーション内でビュー プロパティを選択する必要があります。 Exif メタデータには、1 つの画像ファイルに技術的および主要な画像データと共にサムネイルが含まれる場合もあります。
履歴とバージョン
※ 1995 年 10 月、JEIDA はバージョン 1 を制定しました。このバージョンでは、JEIDA は、画像データのフォーマットと属性情報、および基本的なタグから構成される構造を定義しました。
- 1997 年 11 月、バージョン 1.1 が導入され、バージョン 1 のほとんどのタグが追加されましたが、オプションの属性情報とフォーマット操作の規定も追加されました。
- 1998 年 6 月、sRGB カラー スペース、圧縮されたサムネイル、オーディオ ファイルを備えたバージョン 2。
- 1998 年 12 月、ストレージと属性情報が強化されたバージョン 2.1。
- 2002 年 2 月、バージョン 2.2、バージョン 2.1 を改良し、印刷仕上げを追加。
- 2003 年 9 月、Adobe RGB として知られるオプションの色空間を含むバージョン 2.21。
EXIF ファイル形式
EXIF は、特定のメタデータを追加して、次のファイル形式を使用します。
- JPEG - 圧縮画像ファイルの離散コサイン変換 (DCT)。
- 非圧縮画像ファイル用の TIFF Rev. 6.0 (RGB または YCbCr)。
- RIFF WAV 音声ファイル (リニア PCM または ITU-T G.711 非圧縮音声データ用の μ-Law PCM、および IMA-ADPCM (圧縮音声データ用))。
EXIF で使用されるマーカー
マーカー 0xFFE0~~0xFFEF は「アプリケーション マーカー」であり、ユーザー アプリケーションによって使用されます。たとえば、古いデジカメは、画像の保存に JFIF (JPEG File Interchange Format) を使用します。 JFIF は、APP0 (0xFFE0) マーカーを使用して、デジカム構成データとサムネイル画像を挿入します。さらに、EXIF もデータの挿入にアプリケーション マーカーを使用しますが、EXIF は JFIF 形式との競合を避けるために APP1 (0xFFE1) マーカーを使用します。すべての EXIF ファイル形式は、この形式から始まります。
SOI マーカー | APP1 マーカー | APP1 データ | その他のマーカー |
---|---|---|---|
FFD8 | FFE1 | SSSS 457869660000 TTTT…… | FFXX SSSS DDDD…… |
SOI(0xFFD8)マーカーから始まるので、JPEGファイルです。その後、APP1 マーカーがすぐに続きます。 EXIF のすべてのデータは、この APP1 データ領域に格納されます。上表の「SSSS」の部分は、APP1データ領域(EXIFデータ領域)のサイズを意味します。サイズ「SSSS」には記述子自体のサイズも含まれることに注意してください。 「SSSS」の後、APP1のデータが始まります。最初の部分は、EXIF かどうかを識別するための特別なデータで、ASCII 文字「EXIF」と 0x00 の 2 バイトが使用されます。 APP1 マーカー領域の後、他の JPEG マーカーが続きます。
Exif データ構造
EXIFデータ(APP1)の大まかな構造は以下の通りです。上記のように、EXIF データは ASCII 文字 “EXIF” と 2 バイトの 0x00 から始まり、EXIF データが続きます。 EXIF は TIFF 形式を使用してデータを保存します。
FFE1 | APP1 マーカー |
---|---|
SSSS | APP1 データ |
45786966 0000 | Exif ヘッダー |
49492A00 08000000 | TIFF ヘッダー |
XXXX. . . . | IFD0 (メイン イメージ) |
LLLLLLLL | IFD1 へのリンク |
XXXX. . . . | IFD0 のデータ領域 |
XXXX. . . . | Exif SubIFD |
00000000 | リンクの終わり |
XXXX. . . . | Exif SubIFDのデータ領域 |
XXXX. . . . | IFD1(サムネイル画像) |
00000000 | リンクの終わり |
XXXX. . . . | IFD1 のデータ領域 |
FFD8XXXX。 . . XXXXFFD9 | サムネイル画像 |
TIFF ヘッダー
8 バイトの TIFF ファイル ヘッダーには、次の情報が含まれています。
Bytes 0-1:
ファイル内で使用されるバイト順。正当な値は、「II」(4949.H)「MM」(4D4D.H) です。
「II」形式では、16 ビット整数と 32 ビット整数の両方で、バイト順は常に最下位バイトから最上位バイトの順になります。これはリトル エンディアン バイト順と呼ばれます。 「MM」形式では、16 ビット整数と 32 ビット整数の両方で、バイト順は常に最上位から最下位の順です。これは、ビッグ エンディアン バイト オーダーと呼ばれます。
Bytes 2-3:
ファイルを TIFF ファイルとしてさらに識別する、任意だが慎重に選択された番号 (42)。バイト順はバイト 0-1 の値に依存します。
Bytes 4-7:
最初の IFD のオフセット (バイト単位)。ディレクトリは、ヘッダーの後のファイル内の任意の場所にある場合がありますが、単語境界で開始する必要があります。特に、イメージ ファイル ディレクトリは、それが記述するイメージ データの後に続く場合があります。リーダーは、ポインターが導くところならどこでもポインターをたどる必要があります。バイト オフセットという用語は、このドキュメントでは常に、TIFF ファイルの先頭に対する位置を参照するために使用されます。ファイルの最初のバイトのオフセットは 0 です。
画像ファイル ディレクトリ
IFD には、イメージに関する情報と、実際のイメージ データへのポインタが含まれています。これは、ディレクトリ エントリ数 (つまり、フィールド数) の 2 バイト カウントと、それに続く 12 バイト フィールド エントリのシーケンスで構成されます。 、次の IFD の 4 バイトのオフセットが続きます (ない場合は 0)。 TIFF ファイルには少なくとも 1 つの IFD が必要であり、各 IFD には少なくとも 1 つのエントリが必要です。
IFDエントリー
各 12 バイトの IFD エントリは次の形式です。
バイト | 説明 |
---|---|
0-1 | フィールドを識別するタグ |
2-3 | フィールドの種類 |
4-7 | 示された型の数 |
8-11 | 値オフセット、フィールドの値のファイル オフセット (バイト単位)。値は単語境界で始まることが期待されます。したがって、対応する値オフセットは偶数になります。このファイル オフセットは、画像データの後であっても、ファイル内の任意の場所を指す場合があります。 |
TIFF フィールドは、TIFF タグとその値で構成される論理エンティティです。この論理的な概念は、IFD エントリとして実装され、値/オフセット部分 (IFD エントリの最後の 4 バイト) に収まらない場合は実際の値が追加されます。 TIFF フィールドと IFD エントリという用語は、ほとんどのコンテキストで交換可能です。
サムネイル画像
Exif 形式には、画像のサムネイルが含まれます (Ricoh RDC-300Z を除く)。通常、IFD1 の隣にあります。サムネイルには 3 つの形式があります。 JPEG形式(JPEGはYCbCrを使用)、RGB TIFF形式、YCbCr TIFF形式。
JPEG 形式のサムネイル
IFD1 の Compression(0x0103) Tag の値が「6」の場合、サムネイル画像のフォーマットは JPEG です。 Exif 画像のほとんどは、サムネイルに JPEG 形式を使用しています。その場合、IFD1のJpegIFOffset(0x0201)タグでサムネイルのオフセット、JpegIFByteCount(0x0202)タグでサムネイルのサイズを取得できます。データ形式は通常の JPEG 形式で、0xFFD8 から始まり 0xFFD9 で終わります。 Exif2.1以降の推奨サムネイル形式はJPEG形式、サイズは160x120pixelのようです。
TIFF形式のサムネイル
IFD1 の Compression(0x0103) Tag の値が ‘1’ の場合、サムネイル画像のフォーマットは無圧縮 (TIFF 画像と呼びます) です。サムネイルデータの始点はStripOffset(0x0111)タグ、サムネイルのサイズはStripByteCounts(0x0117)タグの合計です。