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