JFIF は JPEG File Interchange Format(JPEGファイル交換形式)の略で、JPEG は Joint Photographic Experts Group の略です。JFIF は、異なるプログラムやコンピューターで開けるように JPEG 画像データを保存するファイル形式です。
JFIF バージョンは JPEG ファイル内部のメタデータ項目です。このファイルがどのバージョンの JFIF 仕様に従っているか、例えば 1.01 や 1.02 のように示します。この項目はJPG ファイルに含まれており、JFIF は JPEG 画像専用の形式であるためです。
JFIF が JPEG 画像に追加するもの
JPEG 規格は画像データをどのように圧縮するかを定めています。JFIF ファイルは、APP0 セグメントと呼ばれるデータブロックが 1 つ追加された通常の JPEG ファイルです。このブロックは、画像の開始マーカーの直後に配置されます。
APP0 セグメント内のデータは、テキスト JFIF から始まります。このセグメントには、圧縮された画像データ自体には含まれない次の情報が保存されます。
- JFIF バージョン
- 解像度の単位(インチ、センチメートル、または単位なし)付きの水平方向と垂直方向の画素密度
- 2 つの密度値からプログラムが算出する画素アスペクト比
- サムネイルと呼ばれる、任意の小さなプレビュー画像
JFIF はカラーモデルも定めます。JFIF 画像は、輝度のみの 1 チャンネル、または YCbCr 色空間の 3 チャンネルのいずれかを持ちます。
どのファイルがそれを持っているか
MIME タイプ image/jpeg は、JFIF 形式の JPEG 画像用に定義されています。拡張子 .jpg、.jpeg、.jpe、.jif、.jfif はすべてこの形式に属します。したがって、名前が .jfif で終わるファイルも、.jpg ファイルと同じ種類の画像を保持しています。
デジタルカメラは通常、JPEG 写真を Exif 形式で保存します。Exif は主に APP1 セグメントにメタデータを保存し、このセグメントも画像の開始直後に置かなければなりません。どちらのセグメントも先頭に来る必要があるため、1 つのファイルが JFIF と Exif の両方に同時に従うことはできません。
一部のプログラムは、Exif セグメントの前に JFIF セグメントを書き込むことがあります。このようなファイルでは、JFIF バージョンとExif バージョンの両方が表示されます。
値の見え方
JFIF バージョンは 2 バイトで保存されます。最初のバイトにメジャーバージョン、2 番目のバイトにマイナーバージョンが入ります。バージョン 1.02 は、バイト 01 と 02 として保存されます。
ExifTool は、この項目を JFIFVersion として表示します。メジャー番号、小数点、2 桁のマイナー番号の形式で出力します。フォーマットレジストリには、JFIF のバージョンが 3 つ登録されています。
1.00: 仕様の初期バージョン1.01: バージョン 1.02 の前のバージョン1.02: 1992 年 9 月 1 日のバージョン
値の由来
JPEG ファイルを保存するプログラムが、APP0 セグメントとその中のバージョン番号を書き込みます。ITU は 2011 年に JFIF を勧告 T.871 として公開し、ISO および IEC は同じ内容を ISO/IEC 10918-5 として公開しています。この規格はバージョン 1.02 に基づいており、これに従うファイルは値 1.02 を保存しなければなりません。
libjpeg ライブラリをベースにしたプログラムは、既定で 1.01 を書き込みます。ドキュメントでは、バージョン 1.02 の拡張セグメントをプログラムが追加する場合に 1.02 を設定するよう説明しています。そのため、現在保存されたファイルには 1.01 または 1.02 のどちらかが表示される可能性があります。
ファイルにとって重要な理由
バージョンは、プログラムが JFIF データを読み取れるかどうかを示します。仕様では、ファイルのメジャーバージョンがプログラムが対応しているメジャーバージョンと一致していれば、そのファイルは通常デコードできるとされています。
バージョンは、ファイルがどの種類のサムネイルを保持できるかも示します。JFXX と呼ばれる拡張セグメントは、バージョン 1.02 以降でのみ許可されています。JFXX セグメントには、JPEG で圧縮されたサムネイルまたは非圧縮のサムネイルを保存できます。
JFIF バージョンのない JPEG ファイルには、JFIF セグメントが存在しません。これは、カメラが Exif 形式で保存した写真では通常の状態です。