aspose.info
JA

EXIF

更新日

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 は、特定のメタデータを追加して、次のファイル形式を使用します。

  1. JPEG - 圧縮画像ファイルの離散コサイン変換 (DCT)。
  2. 非圧縮画像ファイル用の TIFF Rev. 6.0 (RGB または YCbCr)。
  3. 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 データその他のマーカー
FFD8FFE1SSSS 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 形式を使用してデータを保存します。

FFE1APP1 マーカー
SSSSAPP1 データ
45786966 0000Exif ヘッダー
49492A00 08000000TIFF ヘッダー
XXXX. . . .IFD0 (メイン イメージ)
LLLLLLLLIFD1 へのリンク
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)タグの合計です。

参照

関連項目