PGM (Portable Gray Map)

 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バイト改行コード
データ
不定輝度を示す値(バイナリ)
不定
不定輝度を示す値(バイナリ)
不定