- ベストアンサー
JFIFとexifフォーマットについて
- exifフォーマットのファイルから、情報を取り出すプログラムの作成に関する質問です。
- JFIFはjpegに付加情報を加えたフォーマットであり、先頭20バイト以外はexifフォーマットと同じように見えることが分かりました。
- JFIFのヘッダ部分を取り除けば、exifフォーマットとして情報を読むことができるのかどうかについての質問です。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
すみません、専門家ではありませんが、少し調べてみたのでコメントします。既にご存知のことばかりかもしれません。 jpegとJFIFとExifの関係は、以下のページの説明が非常にわかりやすかったです。 http://itpro.nikkeibp.co.jp/article/COLUMN/20080313/296189/ 一部抜粋すると、 ------- 「JFIF」は、Jpeg方式で圧縮したデータの格納によく用いられるファイル・フォーマット。 「Exif」はJFIFに沿って各種情報を埋め込むための、JFIFの拡張仕様。 つまり,デジカメで撮影した結果のJpegファイルは,圧縮方式がJpegで,ファイル・フォーマットがJFIFで,撮影時の情報はJFIFを拡張したExifの仕様で書かれている――ということになります ------ ということで、ExifはJFIFフォーマットで記載されている、という言い方が正しいようです。J F I Fという文字が埋め込まれていることからは何かわかるかもしれませんが、「JFIFだから普通のファイルと違う」という理論は成り立たないようです。Exif=JFIFルールで記載、なので。 じゃあなぜ情報がうまく読めないのか、ですが、いただいた情報からだけだと推測しか出来ないですが、ぱっと思いついた可能性は2つありました。 ひとつはそのファイルがJFIFまたはExifの規格違反をしている可能性。 もうひとつは、質問者さんのソフトがExifのバージョン違いに対応していない可能性、です。 最新バージョン(2.21かな?)で設計してますか?それとも下位互換をフォローしてますか?規格自体に上位互換があるかどうかわからないですが、ちょっと気になります。 ところで、Exifの仕様書はJeitaのページ等からみることが出来ますね。参考URLにはExif Verion2.1の日本語版仕様書のURLをはっておきます。 最初の20バイトが異なる、ということですが、最初の20バイトは仕様書をざっと見る限り、DFIFのSOI、APP1の途中くらいまででしょうか。しかもAPP1 Bodyの最初のほうまでで、先ほど言ったExif バージョンは20バイトより先に記載されているようなので、Exifバージョンが違う説は関係ないかもしれません。(調べながら書いてるのでまとまり無くてすみません) APP1 Markerの中でASCII?で”e x i f”と記述する、と仕様書に書かれていますが、”D F I F”という文字を入れる記述は書いていないので、DFIFという文字が出てくるのは変な気もします。でもDFIFという文字がのどこに埋め込まれていたのかもわからないですしこれ以上は追えないです。 慣れないことを調べて疲れたので、志半ばで諦めるのは残念ですがここまでにします。もう少し追加で情報をいただけるともう少し追えると思うのですが、せっかくなので質問者さんも規格と照らし合わせて、どこがおかしいのか追ってみてはいかがでしょうか? (結果を教えていただけると嬉しいです)
お礼
ありがとうございます。 そして、お礼が大変遅くなり、申し訳ありません。 そもそもexifというのは、JFIFの拡張仕様なのだそうです。 JFIFにはマーカがあり、そのマーカ単位でデータが出来ているとのことです。