jpeg画像のヘッダ情報にあるJFIFとEXIF。写真が撮影された際の情報などを記録しているもので、データベースやシステムを構築する際の情報源としても使用することができます。
このJFIFとEXIFの違いから、クライアントさんのシステムでエラーが出るようになったため、JFIFとEXIFについて調べなければいけなくなりました。
調べてみると、原因の発端にPhotoshopの仕様変更が関連していたという意外な情報を得ることができたのでJFIFとEXIFについて調べたことをまとめてみました。
JFIFとEXIFって何なの?
「画像にあるはずのJFIF情報が無い」という、クライアントさんから連絡が発端でJFIFとEXIFについて調べることに
日頃懇意にしているクライアントさんからの連絡。
要件は「以前納品してもらっていた画像には、JFIF情報があったのに、ここ最近納品してもらっている画像には、JFIF情報が無くなっているが、消しているのか?」とのこと。
いきなりJFIFなどと言われてもよく分からないというのが実際のところで「知らない。そのような情報をイジるような作業はしていない」で済ませられれば良かったのですが、クライアントさんに納品した画像についてだったので、いい加減な事も言えず、急遽、JFIFについて調べなくてはいけない事態になりました。
ものすごくレアなケースですが、JFIFとEXIFについて調べていくうちに面白いこともいくつかあったので、誰かの役に立てばと、メモ的にまとめておこうと思います。
JFIFとEXIFについて
JFIFとは画像のヘッダ情報のフォーマットのことで、EXIFもその仲間です。JFIFとEXIFは用途的にはとても似ていますが、少し違いがあります。
JFIF ジェイフィフ
jpg画像に画像情報等を格納する為の標準フォーマットで業界標準とされている。
http://ja.wikipedia.org/wiki/JPEG
EXIF エグジフ
JFIFを拡張したフォーマットでデジカメなどで多く使われている撮影時の情報を格納出来るフォーマット。
情報は撮影時に自動的に描き込まれる。
元々は富士写真フイルムが提唱したもので、基本的にはJFIF(.JPG)フォーマットに準拠し、さらにカメラの機種名・撮影年月日・露出情報などの付加情報の格納法が規定されている。
http://ja.wikipedia.org/wiki/Exchangeable_image_file_format
というわけでJFIFの方が業界標準らしいのですが、現状としてデジカメで撮られた生データのほとんどがEXIFになっています。
なので、これだけ世の中にデジカメが普及すると、業界標準と言われてるJFIFよりもEXIFフォーマットの方が圧倒的に多くなっているのが実情で、一般的なのはJFIFよりもEXIFと言えると思います。
JFIFとEXIFの基本的な違い
JFIFとEXIFをの基本的な違いを簡潔に説明すると
● JFIF:Photoshopなどのソフトで何らかの処理をした画像
● EXIF:デジカメで撮られたそのままの画像
ということになります。
JFIFとEXIFのメリットを調べる
EXIFの方が記録出来る情報が多い
EXIFには撮影日時やシャッタースピード、露出や撮影時のカメラの設定、カメラやレンズの種類などが記録されます。
もちろんJFIFにもある程度情報は記録されますが、JFIFはEXIFよりも記録できる項目が少なくなります。この点が、カメラ業界がJFIFではなく、EXIFを多く採用している理由かもしれません。
EXIFの方が出力機(プリンターなど)との相性が良い
EXIFはJFIFに比べて、出力機器との相性も良いようです。
というのも、EXIFを持った画像が読み込まれると、出力機側で「生データ(処理のされていない画像)」と判断してくれて、プリント機器が出力時に補正するようにしているので、Photoshopなどの画像処理ソフトを持っていない人でも出力時には綺麗に補正された写真が手に入れられるようになっています。
JFIFだと「加工処理された画像」というのが前提にあるので、プリント機器は何の処理もせずにそのまま出力するのが普通のようです。
EXIFには撮影した位置情報なども記録される
EXIFには位置情報も記録出来るので、iPhoneなどのGPS機能付きの携帯電話で撮影された写真だと、撮影した位置情報まで記録されています。
なので、そのままネットにアップロードしてしまうと位置情報から自宅などがバレててしまうということで、一時期問題になったりもしました。
一方、JFIFは位置情報を記録することはできません。
位置情報はPhotoshopなどで消せる
iPhoneなどのスマートフォンで撮影した写真には位置情報など個人を特定できるような情報が埋め込まれています。それがそのまま流出してしまうと、自宅を特定されたりしかねません。
そのままだと流石に怖いので、EXIFは書き込みソフトで後から変更したり消去したりも出来るような仕様になっているため、ちょっと注意すればそのあたりは心配しなくて良いように出来ています。
たとえば、Photoshopで画像を開いた後に「Web用に保存」を選んで保存すると「EXIF情報は消去される」と、Adobeのサポートの人が教えてくれました。
EXIFの情報を編集できるソフト
● F6 Exif(フリー)
● 消去ソフト(フリー)
● JPEG Cleaner
● ビューワー(フリー)
● JpegAnalyzer Plus
● Adbe Bridge
JFIFではなくEXIFになっていたことで起きた問題
少し脱線してしまったので話を戻します。
クライアントさんから連絡があり「納品してもらった画像の情報がJFIFではなくてEXIFだったのでJFIFにして納品して欲しい。」というお話。
何が問題だったのかを説明すると
クライアントさんに納品した先で使っているデータベースシステムが、jpg画像のヘッダに含まれるJFIFの情報をプログラムで引っ張って管理していたとのこと。
ところがJFIFの情報が無くなってしまうと、情報を引っ張れなくなってシステムが正常に動かなかったので問題が発生した。
ということでした。
犯人はPhotoshop CS5
いつも通りに画像を処理して納品していたはずなのに、何故今回そういう問題が発生したのかの原因を調べてみると、どうもPhotoshop CS5がどうも怪しいという結論に達しました。
というのも、作業した全てのデータのJFIF/EXIFを調べてみると、以前は全てJFIFフォーマットで納品されていたのが、ある時期からEXIFフォーマットに変わってしまっており、その「ある時期」が、ちょうどPhotoshop CS4からPhotoshop CS5に乗り換えた時と重なっていたからです。
ネットで見つけた手がかり
こういう専門的な事を調べるのに便利なのがインターネットですが、JFIFとEXIFに関しての情報はそれなりに見つかったけれどPhotoshopに関連したJFIFとEXIFの情報は以下の二つしか見つけられませんでした。
File Checker2.3.2アップデートのご案内
JPEGファイルには一般的に画像情報を格納する「JFIF」と呼ばれるフォーマット形式が使用されており、弊社ではこの「JFIF」フォーマットに含まれた情報を元にASUKABOOKの入稿に必要な情報をチェックしていました。
Adobe Photoshop CS5ではこの「JFIF」フォーマットを使用しないという変更がなされました。
http://asukabook.jp/news/100527/index.html
Photoshop CS5
104 :名無しさん@お腹いっぱい。 :2010/05/15(土) 01:08:17 ID:XsPCnAt5 (1 回発言)
書き出したJPEGファイルのヘッダに「JFIF」が無い……
一部のソフトで問題出そうな気が。
http://logsoku.com/thread/pc11.2ch.net/cg/1272081047/101-200
・・・なんという情報の少なさ。
便利なインターネットも情報が専門的すぎたり、レアケースだと当然、情報も少なくなりますね。
いくら調べても、情報が見つからないので、Adobeフォーラムで情報を探すも、やっぱり見つからない・・・。
ならばAdobeのサポートセンターへ電話しよう
考えていてもしょうがないのでAdobeのサポートセンターへ電話してみることにしました。
ちなみにAdobeのサポートセンターでサポートを受けるには、シリアル番号や登録IDが必要です。質問出来る回数も決まってるようで、ちょっと面倒というか不親切な気もしますが、際限なく質問してくる人も居るのでしょうね。
で、さっそくAdobeのサポートセンター質問してみたのですが、結局窓口の人もよく分りませんでした。サポートセンターで確認できるようなことはPhotoshopの基本的な操作方法の説明くらいなのかもしれません。
最初に対応してくれていた窓口の方だとちょっと解決できそうになかったので、もう少しアドバンスな問題に対応出来るような方に代わってもらったのですが問題は解決されず、「詳しい事は調べてから後日返答します」ということになりました。
とりあえず
● CS4からCS5になる時にjpgのフォーマットは変わっていないか?
● 変わっているならそれがどう変ったのか?
● もしPhotoshopCS5が原因ならばプラグインか何かでEXIFをJFIFフォーマットにする事は可能か?
というような内容に関して返答してもらえると嬉しいと伝えておきました。
JFIFとEXIFを判別する方法
さて、今回発生した問題の原因が判明するのを待っている間に、EXIFフォーマットになっているデータをJFIFフォーマットに戻すという仕事が発生しました。
作業を行うためには、まず、JFIFかEXIFかを判断しなければいけません。JFIFかEXIFかを判断するために、Adobe Bridgeやプレビュー.appを使ってみたもののEXIF情報などは確認できても、それがJFIFとEXIFを判別することはできないようです。
JFIFとEXIFを判別するためにはバイナリエディタで開かなければ判断できないことが判りました。
Macのバイナリエディタ0xED
バイナリエディタで画像を開くと、数字の羅列が表示されます。
● JFIFの場合:右側にJFIFとEXIFの文字が確認できる。
● EXIFの場合:JFIFが無くなってEXIFしか文字が確認出来ない。
JFIFとEXIFについてAdobeから回答があった
Adobeに問い合わせをしてから約3週間。AdobeからJFIFとEXIFについて回答の連絡がありました。
Photoshop CS5からの仕様変更が原因でした
結論から書くと、Photoshop CS5からjpgのメタデータからJFIFを削除するように仕様変更したとの事。
Adobe的には「今後はJFIFよりもEXIFがメインで行きますよ」ってことらしいです。つまり「JFIFは諦めて下さい。今後も対応はしませんよ」ってことです。
今現在販売されているデジカメが全てEXIFフォーマットですし、JFIFよりもEXIFの方がより詳細に情報を盛り込めるわけですから、Adobeでなくても、そういう判断になると思います。時代の流れだからしょうがありません。
というわけで、それでもJFIFにこだわるようであればPhotoshopのバージョンをCS4以降にデグレードするしかないようです。本当はAsobeが対応してくれれば良いのですが、確認してみたところ、無理そうなことを言っていました。
案外同じ問題で悩んでいる人も多そうなので、CS6では仕様を戻してくれたりしないかなー。って淡い期待もしてみたりするのですが、そんなことは無いようですね。
とりあえず、原因が判明したので、そのあたりの事情をクライアントさんに報告。納得してくれたものの、やっぱり「JFIF情報が無いのは困る」とのことで、今後の作業もしょうがなくCS4に戻して作業をするしかないのでした。とほほ。