JPEG には大きく分けて 2 種類ある

JFIF: JPEG File Interchange Format

  • JPEGエンコードされた画像ファイルの形式の規格
  • バイナリエディタJPEG ファイルを開くと先頭の方に JFIF って書いてあるよね、っていうのの JFIF です
    • そうとも限らんよという話をこれからするわけですが
  • たぶんウェブで流通してる JPEG ファイルはこっちのことのほうが多いのではないかなという印象がある (根拠はまったくない)

Exif: Exchangeable Image File Format

  • Exif っていうと、なんとなくデジカメの撮影時の情報がなんか JPEG に埋め込まれてるアレのことじゃねーの、と思うんだけど、実際には Exif というのはファイルフォーマットの規格である
  • 我々がふだん Exif 情報などと呼んでいるアレは、APP1 Application Marker Segment ってとこに入っている (上記仕様の「4.5.4 JPEG圧縮データの基本構造」)
  • Exif ファイルは JPEG であるとは限らない (「3.2 Exif画像ファイル規定」「3.3 Exif音声ファイル規定」)
    • 音声!!!

上記の両者には微妙に互換性がないと思われている。それぞれの Wikipedia の項目を見るとなんとなく察しがつくかもしれないけど、Application Marker Segment の部分が別物になっている。実際の画像の部分 (曖昧な表現で逃げている) は同じっぽい。

This is because both standards specify that their particular application segment (APP0 for JFIF, APP1 for Exif) must immediately follow the SOI marker.

https://en.wikipedia.org/wiki/JPEG_File_Interchange_Format#Compatibility

JFIF では APP0 が必須で APP0 にしか言及されていないが、ExifJPEG 圧縮データでは APP1 が必須、必要に応じて APP15 までいけるで! という感じになっている (「4.5.5 アプリケーションマーカセグメント」)。

参考文献