JFIF
ITU-T T.871
JPEGの基本規格に加えて色、サイズなどの情報を加えてファイル形式っぽくしたもの。
JPEG Interchange Format のさらに流通しやすい機能限定版
JPEGベースライン処理のみ
SOI, APP0 ではじめる
JPEG File Interchange Format
Version 1.02
なぜ「ファイル交換フォーマット」なのか
JPEGファイル交換フォーマット(JFIF)は、多種多様なプラットフォームやアプリケーション間でJPEGビットストリームを交換できるようにするための、最小限のファイルフォーマットです。この最小限のフォーマットには、TIFF JPEG仕様に見られるような高度な機能や、特定のアプリケーションに固有のファイルフォーマットに見られるような機能は含まれていません。そもそも、そうした機能を含める必要はないのです。なぜなら、この簡素化されたフォーマットの唯一の目的は、JPEG圧縮された画像の交換を可能にすることにあるからです。
JPEG File Interchange Format(JFIF)の特長
JPEG圧縮を使用
JPEG交換フォーマット(JPEG interchange format)による圧縮画像表現を使用
PC、Mac、Unixワークステーションとの互換性
標準色空間:1成分または3成分。3成分の場合はYCbCr(CCIR 601、256レベル) APP0マーカーを使用して、単位、X方向画素密度、Y方向画素密度、サムネイルを指定
APP0マーカーはJFIF拡張機能の指定にも使用
APP0マーカーはアプリケーション固有情報の指定にも使用
JPEG圧縮
JPEG File Interchange Format(JFIF)の構文上はあらゆるJPEG処理がサポートされていますが、ファイル交換を目的とする場合には、JPEGベースライン処理を使用することが強く推奨されます。これにより、JPEGをサポートするすべてのアプリケーションとの間で最大限の互換性が確保されます。JFIFは、JPEG国際規格案(ISO DIS 10918-1)に準拠しています。
JPEG File Interchange Format(JFIF)は、標準のJPEG Interchange Formatと完全に互換性があります。唯一の追加要件は、SOIマーカーの直後にAPP0マーカーを必ず配置することです。なお、JPEG Interchange Format(JFIFも同様)では、符号化処理で使用されるすべてのテーブル定義を、実際に使用する前にビットストリーム内に記述しておく必要があります。
プラットフォーム間での互換性
JPEG File Interchange Formatはプラットフォーム間での互換性を備えています。例えば、MacintoshではサポートされていますがPCやワークステーションではサポートされていない「リソースフォーク」は使用されません。
標準色空間
使用する色空間は、CCIR 601(256階調)で定義されるYCbCrとします。YCbCrから線形変換によって算出されたRGB成分には、ガンマ補正を適用しません(ガンマ = 1.0)。いずれか1つの成分のみを使用する場合は、その成分をYとします。
JPEG FIFを識別するためのAPP0マーカー
JPEG FIFファイルを識別するためにAPP0マーカーが使用されます。JPEG FIFのAPP0マーカーは、SOIマーカーの直後に配置することが必須です。
JFIFのAPP0マーカーは、ヌル終端文字列「JFIF」によって識別されます。JFIFのAPP0マーカーと区別できる限りにおいて、アプリケーションがAPP0を他の目的で使用することも可能です。
JFIFのAPP0マーカーは、JPEGストリームには含まれていない情報(バージョン番号、XおよびY方向の画素密度(dpiまたはドット/cm)、画素アスペクト比(XおよびY方向の画素密度から算出)、サムネイル)を提供します。
JFIF拡張を指定するためのAPP0マーカー
JFIF拡張を指定するために、追加のAPP0マーカーセグメントを任意で使用できます。これらを使用する場合、当該セグメントはJFIF APP0マーカーの直後に配置する必要があります。デコーダは、サポートされていないJFIF拡張セグメントをスキップし、デコード処理を継続すべきです。
JFIF拡張APP0マーカーは、ヌル終端文字列「JFXX」によって識別されます。JFIF拡張APP0マーカーセグメントには、その拡張を識別する1バイトのコードが含まれています。バージョン1.02である本仕様において定義されている拡張は1つのみであり、それは24ビットRGB以外の形式で格納されたサムネイルを定義するためのものです。
アプリケーション固有情報用のAPP0マーカー
JFIFファイルのデコードや表示に影響を与えないアプリケーション固有の情報を格納するために、追加のAPP0マーカーセグメントを使用できます。アプリケーション固有のAPP0マーカーセグメントは、JFIF APP0セグメントおよびJFXX APP0セグメントの後に配置する必要があります。デコーダは、認識できないアプリケーション固有のAPP0セグメントをスキップするようにしてください。
アプリケーション固有のAPP0マーカーセグメントは、そのアプリケーションを識別する「null終端文字列」("JFIF"や"JFXX"以外のもの)によって識別されます。この文字列には、組織名や企業の商標を使用すべきです。「dog」、「cat」、「tree」といった一般的な単語を文字列として使用してはなりません。