$Id: exif.html,v 1.20 1999/01/09 17:30:31 itojun Exp $To readers: This page tries to understand Exif graphic format to some extent. This page is NOT a complete specification in nature. Also, this page is incomplete and obsolete; the page only describes very few part of Exif version 1, and there's Exif version 2 exist. I do not plan to expand this page, and I will not be providing English page.
If you need a complete documentation, you should contact JEIDA, Japan Electronic Industry Development Association, who sells Exif specification sheet in outrageous price (they charge $60 for a document with only 103 pages). I believe it VERY stupid to make a common standard specification document proprietary.
I have no extra information nor alternate webpage. I have no English version of this webpage, I have no plan to do the translation.
To digi-cam manufacturers around the world, Exif is a good specification, but JEIDA REALLY sucks. I really do think so.
ここで調査に使っているのは、DS-7から吸った640x480のExifファイルである。 他のカメラから吸った場合とか、 DS-7の320x240モードの画像だとどうなってるかとかはわからない。
構造を書き下すと以下のようになる。 (なんかもっとわかりやすい書き方はないもんかな)
| フォーマット | 中身/意味 | ||
|---|---|---|---|
| jpegファイル | SOIマーカ | jpegのはじまり | |
| APP1マーカ | Exifのはじまり | ||
| APP1データ | Exifヘッダ | 単なるマジックナンバ | |
| Exifデータ(tiffフォーマット) | 撮影日付/サムネイル | ||
| 他のマーカ/データ | jpeg画像データ | ||
APP1マーカがどこに来るべきか、というのはよくわからないが、 とりあえずDS-7の吐いたExifファイルの場合、 以下のようにAPP1マーカが一番最初に来ている。
00000000: FF D8 FF E1 28 98 45 78 69 66 00 00 49 49 2A 00
^^^^^SOIマーカ ^ここからAPP1データ
^^^^^APP1マーカ
^^^^^APP1サイズ: 10390(0x2898)bytes
00000010: 08 00 00 00 0D 00 )E 01 02 00 07 00 00 00 AA 00
...
00002880: 71 53 6D 81 69 60 6A 83 61 5B 6A 85 4C 55 70 80
00002890: 89 5A 6F 83 56 55 6D 83 4E 2E 6E 80 FF DB 00 C5
^^^^^DQTマーカ(APP1の次)
APP1マーカ/データ以外の部分は、普通のviewerで見ることのできる
jpegファイルであり、そこには撮影されたフルサイズの画像が格納されている。
サイズに特別な制約があるのかどうかは、
手元にDS-7の吐いた640x480の画像しかないのでよくわからない。
しかし、この画像サイズはAPP1データの中に格納されているtiffファイルにも
記述されているので、両者がちゃんと正しく整合していないといけないのだけは
間違いない。
DS-7から吸ったExifデータの場合、Endianはbig endian(intel)である。
このtiffファイルには、IFD(Image File Directory)がふたつある。 どうも、見ている限り前者は
未使用領域の例を以下に示す:
0 1 2 3 4 5 6 7 8 9 a b c d e f 0123456789abcdef ----------------------------------------------- ---------------- vここから 00000150: 00 00 01 00 00 00 ff 00 00 00 01 00 00 00 06 00 ................ 00000160: 00 90 07 00 04 00 00 00 30 31 30 30 01 91 07 00 ........0100.... 00000170: 04 00 00 00 01 02 03 00 02 91 05 00 01 00 00 00 ................ 00000180: ac 01 00 00 01 92 05 00 01 00 00 00 b4 01 00 00 ................ 00000190: 02 92 05 00 01 00 00 00 bc 01 00 00 03 90 02 00 ................ 000001a0: 14 00 00 00 c4 01 00 00 00 00 00 00 02 00 00 00 ................ 000001b0: 01 00 00 00 32 00 00 00 0a 00 00 00 17 00 00 00 ....2........... 000001c0: 0a 00 00 00 31 39 39 36 3a 30 38 3a 32 34 20 31 ....1996:08:24 1 000001d0: 37 3a 30 31 3a 33 34 00 11 00 00 01 04 00 01 00 7:01:34......... 000001e0: 00 00 50 00 00 00 01 01 04 00 01 00 00 00 3c 00 ..P...........<. 000001f0: 00 00 02 01 03 00 03 00 00 00 aa 02 00 00 03 01 ................ 00000200: 03 00 01 00 00 00 01 00 00 00 06 01 03 00 01 00 ................ 00000210: 00 00 06 00 00 00 11 01 04 00 01 00 00 00 10 03 ................ 00000220: 00 00 15 01 03 00 01 00 00 00 03 00 00 00 16 01 ................ 00000230: 03 00 01 00 00 00 3c 00 00 00 17 01 04 00 01 00 ......<......... 00000240: 00 00 80 25 00 00 1a 01 05 00 01 00 00 00 b0 02 ...%............ 00000250: 00 00 1b 01 05 00 01 00 00 00 b8 02 00 00 1c 01 ................ 00000260: 03 00 01 00 00 00 01 00 00 00 28 01 03 00 01 00 ..........(..... 00000270: 00 00 02 00 00 00 11 02 05 00 03 00 00 00 c0 02 ................ 00000280: 00 00 12 02 03 00 02 00 00 00 02 00 01 00 13 02 ................ 00000290: 03 00 01 00 00 00 02 00 00 00 14 02 05 00 06 00 ................ 000002a0: 00 00 d8 02 00 00 00 00 00 00 08 00 08 00 08 00 ................ 000002b0: 48 00 00 00 01 00 00 00 48 00 00 00 01 00 00 00 H.......H....... 000002c0: 2b 01 00 00 e8 03 00 00 4b 02 00 00 e8 03 00 00 +.......K....... 000002d0: 72 00 00 00 e8 03 00 00 00 00 00 00 01 00 00 00 r............... 000002e0: ff 00 00 00 01 00 00 00 80 00 00 00 01 00 00 00 ................ 000002f0: ff 00 00 00 01 00 00 00 80 00 00 00 01 00 00 00 ................ 00000300: ff 00 00 00 01 00 00 00 44 53 2d 37 00 00 00 00 ........DS-7.... ^ここまでとりあえず日付が見えますね。 "0100"ってのはフォーマットのバージョン番号でしょうか。
この中をどうやってデコードするかについてははっきり言ってよくわからなーい。 どうせ可変長のフォーマットに違いないのでオフセット決め打ちはできたら避けたい。
80x60の画像が圧縮されずに格納されている。 画像の各ピクセルの色はYCbCrで表されているのでちょっとめんどくさいが、 ふたつめのIFDはまっとうなtiffフォーマットをしているので 安直に読み出すことができる。 xvとかでも見れる。
サムネイルを取り出しちゃうツールをつけておいたので、 ツール類の節を参照してください。
% dd if=hoge.app1 of=hage.tiff bs=1 skip=6で十分である。
ちょっとずれるかもしれないが、 日本の政府関連機関や社団がつくった資料は大抵有料配布で、 しかもナマでの再配布が禁じられている(例: 国土地理院の数値地図)。 税金でつくったもんを買わないといけないってのはどういうことだあ? とわたしは思う。 日本の頭カタイひとの思考回路のdefaultがそうなってるのか?