PNM (画像フォーマット)
PGM形式とPPM形式の元々のバイナリ形式 (P5およびP6) では、ビット深度は8ビットまでしかサポートしていなかった。テキスト形式でこれを拡張するのは容易だが、それにより画像の操作に時間がかかるようになり、またファイルサイズも大きくなる。そこで、多くの拡張法が試みられた。しかしビット深度を8ビットよりも大きくすると、エンディアンの問題が生じ、様々な実装でバイトオーダーが一致しないという事態が生じた。なお、実装のデファクトスタンダードであるNetpbmではビッグエンディアンである。
各形式は、色をどう表現するかという点で異なっている。
PBM は本当の意味でのビットマップである (白と黒の二値しか表現しない)
PGM はグレイスケールを表現できる
PPM は RGB でフルカラーを表現できる、"pixmaps" である
どの形式でも最初の2バイト (テキスト形式) がマジックナンバーとなっており、ファイル形式 (PBM、PGM、PPMのどれか) と、データがテキストかバイナリかを表している。その2バイトの最初は大文字の P で、その後に続く1つの数字が種類を表す。
テキスト形式のデータは、テキストエディタなどで見るのも、他の形式に変換するのも容易である (そういう作業を行うプラットフォームで ASCII コードが正しく扱えるのであれば)。バイナリ形式ではファイルサイズが節約でき、ファイル中に空白文字がないため簡便な方法でファイルを解析できる。また、どちらの形式でも圧縮は行なわない。
バイナリ形式のとき、1ピクセルはPBM形式では1ビットで、PGM形式では8ビット (明度最大値が256未満の場合) または16ビットで、PPM形式では8ビット×3 (明度最大値が256未満の場合) または16ビット×3で表される。PPM形式では、赤(R)、緑(G)、青(B)のそれぞれが8ビットまたは16ビットで表される。不透明度 (アルファチャンネル) やクロマキーはサポートされない。ラスター行に関して、PBMは8ビット (1バイト) 境界を持ち、幅が8の倍数でない場合、最後の8ビットにはパディングのための不要なビットが含まれる。PGMおよびPPMは8ビット境界を持ち、他の多くの画像形式で必要とされる32ビット (4バイト) 境界のパディングは必要ない。