PNM (Portable aNyMap 形式、Netpbm形式) という名前で指される画像形式は、特定の一種類の画像フォーマットではなく、3種類の画像形式をまとめて呼ぶときに使われる。これらの形式は、それぞれ portable pixmap format (PPM 形式)、portable graymap format (PGM 形式)、portable bitmap format (PBM 形式) と呼ばれ、どれも異なるプラットフォーム間でも高い互換性を保てる画像形式として開発されたものである。PBM形式はプレーンテキストとして電子メールで受送信でき、ASCII コードが廃れた後でも使える画像フォーマットを開発する目的で、1980年代にが考案した白黒二値のビットマップ画像のデータ形式である。PBM形式の画像を扱うツールを開発するために、Pbmplusというライブラリが開発された。これはPBM提案者のJef Poskanzerによるもので、1988年にリリースされた。続いて彼はPGM形式およびPPM形式を提唱し、それを扱うために拡張したPbmplusをリリースした。Pbmplusは1991年12月10日までリリースが続いた。1993年に、そのときにはすでに開発が止まっていたPbmplusの代替となるライブラリとしてNetpbmが開発された。これはPbmplusに世界各地から寄せられた修正案を適用し、まとめ直したものであった。現在、PBM、PGM、PPM形式画像を扱うライブラリとして最も多く利用されているのはNetpbmであろうと考えられている。各形式は、色をどう表現するかという点で異なっている。どの形式でも最初の2バイト (テキスト形式) がマジックナンバーとなっており、ファイル形式 (PBM、PGM、PPMのどれか) と、データがテキストかバイナリかを表している。その2バイトの最初は大文字の P で、その後に続く1つの数字が種類を表す。テキスト形式のデータは、テキストエディタなどで見るのも、他の形式に変換するのも容易である (そういう作業を行うプラットフォームで ASCII コードが正しく扱えるのであれば)。バイナリ形式ではファイルサイズが節約でき、ファイル中に空白文字がないため簡便な方法でファイルを解析できる。また、どちらの形式でも圧縮は行なわないため、画像の劣化の問題を回避できる。以下にPBM形式の簡単な例を示す。最初の "P1" という文字列で、これがPBM形式であることが示されている。シャープ記号は、その行がコメント行であることを示す。その下の2つの数値はそれぞれ画像の横幅と高さを示す。その後にピクセルの値 (ここでは白黒画像なので、0 か 1 のどちらかだけ) が続く。以下に、このデータが表す画像を示す。以下に、この画像を20倍に拡大したものを示す。PGMとPPMの各形式では、テキスト形式でもバイナリ形式でも、画像中に現れるピクセルの値の最大値を、画像のサイズの後に示す必要がある。このデータが示す画像は以下のようになる: P3上のデータが示す画像 (を拡大したもの):P6 (バイナリ形式) では、各ピクセルのR、G、Bの各成分が、この順番でそれぞれ1バイトで表される (したがって各ピクセルが3バイトで表される)。ファイルサイズはテキスト形式の1/2~1/4程度に小さくなるが、データを直接見ても分かりにくい。PBM/PGM/PPM形式は圧縮は行わないため、圧縮を行う形式の画像と比べるとファイルサイズが大きくなる。たとえば上のPNG画像はサイズが192x128で187バイトでだが、これを同じサイズのPPM画像に変換すると約72Kバイトになる。PPM形式は適当なライブラリの支援を受けずに画像の操作を行なうときや、圧縮伸張のコストを掛けずに画像の操作を行ないたいときに使い、最終的にはPNGなどのより効率のよい形式にするのがいいだろう。PGM形式とPPM形式の元々のバイナリ形式 (P5およびP6) はビット深度は8ビットまでしかサポートしていなかった。テキスト形式でこれを拡張するのは容易だが、それにより画像の操作に時間がかかるようになり、またファイルサイズも大きくなる。そこで、多くの拡張法が試みられた。ビット深度を8ビットよりも大きくすると、エンディアンの問題が生じ、様々な実装でバイト・オーダーが一致しないという事態が生じた。実装のデファクトスタンダードのNetpbmではビッグエンディアンである。
出典:wikipedia
LINEスタンプ制作に興味がある場合は、
下記よりスタンプファクトリーのホームページをご覧ください。