ホーム ] PC技術/システム技術 ] VB.NETプログラミング ] VB.NETコンポーネント ] VC++コンポーネント ] 共通事項 ] インフォメーション ]

上へ
わが家のPC環境
64ビットPC自作
地デジ
PC音楽システム
PC写真システム
Exifファイル入門

PC技術/システム技術

EXIFファイル入門

最終更新日:2007/04/13 修正

●はじめに

  ディジタル・カメラで撮影した写真の撮影情報は、世の中のフリーソフトやメーカ提供ソフトなどで簡単に表示できるので、EXIF形式を知る必要は全くない。しかし、画像ファイルから直接撮影情報を読み取れれば、データベース化が自動化できることになる。この時、EXIFファイルの形式を知る必要がある。

EXIF規格などの解説は沢山出ているので、ここでは、大まかなレベルにとどめる。

●背景

JEIDA(日本電子工業振興協会)がEXIF2.1仕様書としてまとめている。現在は、2.2になっている。ISOで、DCF仕様が策定され、メーカはこれを採用しつつある。DCFはEXIFに準拠し、ファイルシステムまで包含した規格である。

●EXIFとは?

画像自体はJPEG画像形式で、その中にサムネール画像や撮影情報などのデーターを規約に準拠した形で埋め込んだものとなっている。従って、従来のJPEG画像(JFIF形式)を表示するソフトであればEXIFファイルも問題なく表示できる。

●ファイルの全体構造

ファイルはメタデータが集まったバイナリファイルとなっている。必ず、hFFD8で始まり、hFFD9で終わる。(hXXXXはHexa表現)

hFFD8:SOI(Start Of Image)
hFFD9:EOI(End Of Image)

で、これらはマーカと呼ばれている。マーカは一般には、

hFFXX

の形式で、hFFXX SSSS DDD・・・・・DDDD と言う形を取る。SOI、EOIは特別で、SやDを持たない。

SSSS:UInt16で表されたデータサイズ(バイト数)、SSSSの2バイトを含む
DDD・:SSSSバイトのバイト列で表されたデータ

また、hFFE0〜hFFEFをアプリケーション・マーカと呼び、画像のデコードには無関係なマーカで、

hFFE0:JFIF形式で使われるマーカ、APP0マーカと呼ばれる
hFFE1:EXIF形式で使われるマーカ、APP1マーカと呼ばれる

となっている。APP1がEXIFの画像以外の付帯情報(サムネール、撮影情報など)群となる。hFFDAは画像本体の開始を示すSOS(Start Of Stream)と呼ばれるマーカが続く。欲しい情報は、APP1にある。

APP1領域

APP1マーカ以降、SOSの直前までが欲しい情報がある部分である。ここには、APP1全体のバイト数(最大で64K)、EXIFヘッダ、Tiffヘッダと続き、情報本体であるIFD(Image file directory)領域となる。

IFD領域

APP1領域内で情報を格納している部分で、複数のIFDからなる。IFDの構造は規格で定義されている。標準IFDの他、メーカ独自の情報を格納するMakerNote IFDがある。但し、MakerNoteはIFD形式であるとは限らない。

実際のEXIFファイル例

EXIFファイルのダンプリストを元に解説する。

●EXIFファイルを読む

標準IFDとMakerNoteを自分のプログラムで読み、撮影情報などを得る方法は、この頁を参照する。