アプリ版:「スタンプのみでお礼する」機能のリリースについて

こんばんは。

exifフォーマットのファイルから、情報を取り出すプログラムを作っています。
ところが、あるテスト画像の情報がうまく取れないので、バイナリエディタで中身を見たら、...JFIF...Exif...となっていました。

JFIFについて調べたのですが、jpegにさらに付加情報を加えた、という情報くらいで、詳しいフォーマットについて分かりませんでした。

でも、共通して言えるのは、先頭20バイト以外は、exifフォーマットと同じように見えることです。
JFIFのヘッダ部分を取り除けば、exifフォーマットとして情報を読むことが出来るのでしょうか?

お詳しい方がいらっしゃいましたら、宜しくお願いします。

A 回答 (1件)

すみません、専門家ではありませんが、少し調べてみたのでコメントします。

既にご存知のことばかりかもしれません。

jpegとJFIFとExifの関係は、以下のページの説明が非常にわかりやすかったです。
http://itpro.nikkeibp.co.jp/article/COLUMN/20080 …

一部抜粋すると、
-------
「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という文字がのどこに埋め込まれていたのかもわからないですしこれ以上は追えないです。

慣れないことを調べて疲れたので、志半ばで諦めるのは残念ですがここまでにします。もう少し追加で情報をいただけるともう少し追えると思うのですが、せっかくなので質問者さんも規格と照らし合わせて、どこがおかしいのか追ってみてはいかがでしょうか?
(結果を教えていただけると嬉しいです)

参考URL:http://it.jeita.or.jp/document/publica/standard/ …
    • good
    • 0
この回答へのお礼

ありがとうございます。
そして、お礼が大変遅くなり、申し訳ありません。

そもそもexifというのは、JFIFの拡張仕様なのだそうです。
JFIFにはマーカがあり、そのマーカ単位でデータが出来ているとのことです。

お礼日時:2009/04/23 23:50

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!