i-mode
Album Maker Page
ホームMacintoshOpenGLThinkPadJavaダイビング水中デジカメ


インデックス

Java
電子アルバム
初心者編
詳細編
Exif
ダウンロード
iアプリ
iアプリ開発
よくある質問

Exifファイルフォーマット

昨今のデジカメのスペックを見ると出てくるのが「ファイルフォーマットはDCF」といった記述です。一昔前なら「Exifフォーマット」という名前がよく出てきていました。

一体これらの画像フォーマットはどんなものなのでしょうか。

目次

DCF規格とは

まずよくあるのがDCFがファイルのフォーマットを表しているという誤解です。DCFは"Design rule for Camera File System"の略で「ファイルシステムの規格」なのです。DCFで規定されるのは以下のような内容です。

つまりデジカメのメディアにファイルを書き込む場合の構成とそれを書き込む機器、再生する機器の規定がDCFであり、実際に置かれる画像ファイルのフォーマットはExifが用いられているのです。

つまりExifファイルフォーマットが無くなって代わりにDCFが出てきたのではなく、ファイルフォーマットはExifでファイルシステムはDCFであるというのが正しい認識なのです。

デジカメのファイルフォーマットを調べたかった私はこの誤解のためにDCFの規格を取り寄せてしまい、大失敗しました。こういった定義の問題は、雑誌の記事やデジカメの説明書にさえ載っていません。初心者向けに分かりやすいマニュアルや記事を書くことは必要ですが、誤解を生むような内容では意味がないのでは無いでしょうか。

Exif規格とは

Exif規格は純粋にデジカメ用の画像ファイルフォーマットの規格です。そこでまた誤解が生じやすいのは、「Exif対応のソフトがないと見られないのか」という事です。

結論を言うとそんなことはありません。Exifファイルは一般的なJPEGファイルフォーマット、もしくはTIFFファイルフォーマットに準拠しています、そしてそれらの規格の範囲内で撮影条件などの独自の情報を埋め込んでいるのです。だから画像を見たいだけならExif対応のソフトを買ったりする必要はありません。

もちろんExif対応のソフトがあれば良いこともあります。

JPEGファイルフォーマットには「アプリケーションマーカセグメント」という領域が定義されていて、アプリケーション固有の情報を格納できるようになっています。Exifファイルフォーマットはその領域にExif独自の情報を格納しているので、それを読みだして再び書き込む機能がアプリケーションにあればそれを失うことは無くなります。

逆にExif非対応のソフトでExifファイルをレタッチしてしまうとそれは大体の場合"JFIF"という別のフォーマットで記録されてしまい、アプリケーション情報には"PhotoShop ver 5.0"とか書かれてしまう訳です。

余談ですがExif対応のデジカメを販売しているメーカーからデジカメ画像のサンプルをダウンロードして見てみると、臆面もなくJFIF画像で中に"PhotoShop"とか書いてあるなどという場合があります。全く「馬鹿にすんなよ」といった感じです。

レタッチを一切加えないサンプルを置くのが当然としても、レタッチをした場合、例えそれが縦横の方向を変えただけだったとしても、メーカの信頼を損なわないために注意書きを添えておくべきではないでしょうか。

しかもこれからはExif対応の書き込みソフトが出てくるでしょうから、サンプル画像は個人のページなどの利害の絡まない筋からのものしか信頼できなくなってしまうでしょう。

Exifファイルフォーマット

それではExifファイルフォーマットの概要を説明していきます。ここでは圧縮形式のExifファイルフォーマットを説明します。Exifのバージョンは2.1にもとづいています。

まずJPEGフォーマットに関する部分は以下のようになっています。

ポイント(16進) サイズ(byte) 値(16進) 意味
0000 2 FFD8 JPEG SOI
0002 2 FFE1 APP1マーカ
0004 2 ? APP1サイズ
0006 6 "Exif"00 Exif識別コード

APP1は「アプリケーションマーカセグメント1」の意味でExifフォーマットではJPEGのこの部分に情報を格納します。

ここから先はExifデータが格納されていますが、それはTIFF画像のタグ形式になっています。

ポイント(16進) サイズ(byte) 値(16進) 意味
0000 2 "MM"(4D4D)
or
"II"(4949)
TIFFヘッダ
"MM": Big Endian
"II": Little Endian
0002 2 002A TIFF識別コード
0004 4 00000008 0th IFDへのポインタ
0008 0th IFDの始まり

TIFFヘッダによってここから先のエンディアンが決まります。エンディアンについてはここでは説明しません。

IFDというのはTIFFのタグのセットの事でこの直後から0th IFD(0番目のIFD)が始まる場合には0th IFDへのポインタの値は00000008.Hとなります。

0th IFDの構造は以下のようになります。

ポイント(16進) サイズ(byte) 値(16進) 意味
0008 2 n タグの数
000A 12 x n ? タグ領域
000A+12*n 2 ? 次のIFDへのポインタ
000A+12*n+2 ? ? タグの値の領域

一つ一つのタグは12バイトの大きさで、以下のような形式になります。

ポイント(16進) サイズ(byte) 意味
0000 2 タグ
0002 2 値のタイプ
0004 4 値の数
0008 4 値もしくは値へのオフセット

タグの値は4バイト以内ならばタグの中に、4バイトより大きい場合は値のある場所へのオフセットを記述します。

全てのポインタやオフセットはTIFFヘッダからのオフセットです。

0th IFDの最後にある次のIFDへのポインタは1st IFDを指しています。1st IFDもTIFFのタグの集合になっていて、こちらはサムネイル画像の属性が格納されています。

タグに格納されている値のタイプは以下のものが用いられています。

タイプ 名前 サイズ(byte) 内容
1 BYTE 1 8ビット符合なし整数
2 ASCII ? ASCII文字の集合'0.H'で終端
3 SHORT 2 16ビット符合なし整数
4 LONG 4 32ビット符合なし整数
5 RATIONAL 8 LONG2つ、分子/分母
7 UNDEFINED ? 未定義のバイト列
9 SLONG 4 32ビット符合あり整数
10 SRATIONAL 8 SLONG2つ、分子/分母

Exifで用いられるタグ

0th, 1st IFDで用いられるタグには以下のような種類があります。これはTIFF Rev6.0 の必須タグの中でExifで用いるものと、Exif固有のタグを含んでいます。

タグ タグ名 意味
256 ImageWidth 画像の幅(ピクセル)
257 ImageLength 画像の高さ(ピクセル)
258 BitsPerSample 画素のビットの深さ(ビット)
259 Compression 圧縮の種類
262 PhotometricInterpretation 画素構成の種類
274 Orientation 画素の並び
277 SamplesPerPixel ピクセル毎のコンポーネント数
284 PlanarConfiguration 画素データの並び
530 YCbCrSubSampling 画素の比率構成
531 YCbCrPositioning 画素の位置構成
282 XResolution 画像の幅方向の解像度(ピクセル)
283 YResolution 画像の高さ方向の解像度(ピクセル)
296 ResolutionUnit 解像度の単位
273 StripOffsets イメージデータへのオフセット
278 RowsPerStrip 1ストリップあたりの行数
279 StripByteCounts 各ストリップのサイズ(バイト)
513 JPEGInterchangeFormat JPEGサムネイルのSOIへのオフセット
514 JPEGInterchangeFormatLength JPEGサムネイルデータのサイズ(バイト)
301 TransferFunction 諧調カーブ特性
318 WhitePoint ホワイトポイントの色座標値
319 PrimaryChromaticities 原色の色座標値
529 YCbCrCoefficients 色変換マトリックス係数
532 ReferenceBlackWhite 黒色と白色の値
306 DateTime ファイル変更日時
270 ImageDescription 画像タイトル
271 Make メーカ
272 Model モデル
305 Software 使用したソフトウェア
315 Artist 撮影者名
3432 Copyright 著作権表示
34665 ExifIFDPointer Exif IFDへのポインタ
34853 GPSInfoIFDPointer GPS情報IFDへのポインタ

この中のExifIFDPointerが示す位置にExif固有のタグを含んだExif IFDがあります。Exif IFDで用いられるタグには以下のような種類があります。

タグ タグ名 意味
36864 ExifVersion Exifバージョン
40960 FlashPixVersion 対応FlashPixのバージョン
40961 ColorSpace 色空間情報
37121 ComponentsConfiguration コンポーネントの意味
37122 CompressedBitsPerPixel 画像圧縮モード(ビット/ピクセル)
40962 PixelXDimension 有効な画像の幅(ピクセル)
40963 PixelYDimension 有効な画像の高さ(ピクセル)
37500 MakerNote メーカ固有情報
37510 UserComment ユーザコメント
40964 RelatedSoundFile 関連音声ファイル名
36867 DateTimeOriginal オリジナル画像の生成日時
36868 DateTimeDigitized ディジタルデータの生成日時
37520 SubSecTime ファイル変更日時の秒以下の値
37521 SubSecTimeOriginal 画像生成日時の秒以下の値
37522 SubSecTimeDigitized ディジタルデータ生成日時の秒以下の値
33434 ExposureTime 露出時間(秒)
33437 FNumber F値
34850 ExposureProgram 露出プログラム
34852 SpectralSensitivity スペクトル感度
34855 ISOSpeedRatings ISOスピードレート
34856 OECF 光電変換関数
37377 ShutterSpeedValue シャッタースピード(APEX)
37378 ApertureValue 絞り(APEX)
37379 BrightnessValue 輝度(APEX)
37380 ExposureBiasValue 露出補正(APEX)
37381 MaxApertureValue レンズの最小F値(APEX)
37382 SubjectDistance 被写体距離(m)
37383 MeteringMode 測光方式
37384 LightSource 光源
37385 Flash フラッシュ
37386 FocalLength レンズの焦点距離(mm)
41483 FlashEnergy フラッシュのエネルギー(BCPS)
41484 SpatialFrequencyResponse 空間周波数応答
41486 FocalPlaneXResolution 焦点面の幅方向の解像度(ピクセル)
41487 FocalPlaneYResolution 焦点面の高さ方向の解像度(ピクセル)
41488 FocalPlaneResolutionUnit 焦点面の解像度の単位
41492 SubjectLocation 被写体位置
41493 ExposureIndex 露出インデックス
41495 SensingMethod 画像センサの方式
41728 FileSource 画像入力機器の種類
41729 SceneType シーンタイプ
41730 CFAPattern CFAパターン
40965 InteroperabilityIFDPointer 互換性IFDへのポインタ

GPSInfoIFDPointerで示された位置にGPS Info IFDがあり、GPSの測定情報を格納できます。ここで用いられるタグには以下のような種類があります。

タグ タグ名 意味
0 GPSVersionID GPSタグのバージョン
1 GPSLatitudeRef 緯度の南北
2 GPSLatitude 緯度(度、分、秒)
3 GPSLongitudeRef 経度の東西
4 GPSLongitude 経度(度、分、秒)
5 GPSAltitudeRef 高度の基準
6 GPSAltitude 高度(m)
7 GPSTimeStamp GPSの時間(原子時計)
8 GPSSatellites 測位に使用したGPS衛星
9 GPSStatus GPS受信機の状態
10 GPSMeasureMode GPSの測位モード
11 GPSDOP 測位の信頼性
12 GPSSpeedRef 速度の単位
13 GPSSpeed 速度
14 GPSTrackRef 進行方向の基準
15 GPSTrack 進行方向(度)
16 GPSImgDirectionRef 撮影方向の基準
17 GPSImgDirection 撮影方向(度)
18 GPSMapDatum 測位に用いた地図データ
19 GPSDestLatitudeRef 目的地の緯度の南北
20 GPSDestLatitude 目的地の緯度(度、分、秒)
21 GPSDestLongitudeRef 目的地の経度の東西
22 GPSDestLongitude 目的地の経度(度、分、秒)
23 GPSBearingRef 目的地の方角の基準
24 GPSBearing 目的地の方角(度)
25 GPSDestDistanceRef 目的地への距離の単位
26 GPSDestDistance 目的地への距離

これらのタグ名はAlbumMakerのExif属性フォーマットを記述する場合に使うことができます。

またAlbumMakerのソースを読む場合にこれらの情報を役立てて下さい。

ExifProperty.classの使い方

AlbumMakerのパッケージに付いてくるクラスでExifファイルのタグ属性を表示することができます。圧縮ファイルを解凍したディレクトリで、

java Exif.ExifProperty <file name>

とコマンドプロンプトから実行すると、タグ属性が表示されます。ウインドウ表示にしたい場合は"W"オプションをつけます。

java Exif.ExifProperty -W <file name>

コンテンツ: [ホーム] [Macintosh] [OpenGL] [ThinkPad] [Java] [ダイビング] [水中デジカメ]

このページについてのご質問はこちらへどうぞ。
このページに用いられている3Dのロゴやボタンは全てGLlogoによってレンダリングされたものです。
このページはリンクフリーです。
著作権等についてはこちらをどうぞ。