PPMはPortable Pixel Mapの略称です。PPMには「アスキー形式」と「バイナリー形式」の2種類があります。データがアスキー形式化バイナリー形式化を区別する場合はヘッダーの先頭2バイト(マジックナンバー)で判別します。画像データ本体がアスキー形式の場合、数値はセパレーター($13, $09, $20)で区切られます。
横幅と縦幅、最大輝度などのヘッダー情報はバイナリーではなく文字列となっています。ヘッダーの先頭の文字が#(シャープ)の場合、改行コード($0A)まで「コメント」とみなされます。
PPMは「最大輝度」を指定することにより24ビットフルカラー画像だけでなく48ビットカラーなどにも対応できるようになっています。
■アスキー形式
ヘッダー 2バイト P3 1バイト 改行コード 不定 横幅を示すアスキー文字列 不定 セパレーター 不定 縦幅を示すアスキー文字列 1バイト 改行コード 不定 最大輝度を示すアスキー文字列 1バイト 改行コード データ 不定 赤の輝度を示す数値(アスキー文字列) 不定 セパレーター 不定 緑の輝度を示す数値(アスキー文字列) 不定 セパレーター 不定 青の輝度を示す数値(アスキー文字列) 不定 セパレーター 不定 :
■バイナリ形式
ヘッダー 2バイト P6 1バイト 改行コード 不定 横幅を示すアスキー文字列 不定 セパレーター 不定 縦幅を示すアスキー文字列 1バイト 改行コード 不定 最大輝度を示すアスキー文字列 1バイト 改行コード データ 不定 赤の輝度を示す値(バイナリ) 不定 緑の輝度を示す値(バイナリ) 不定 青の輝度を示す値(バイナリ) 不定 :