Netpbm は画像を扱うプログラムとライブラリの、オープンソースのパッケージであり、おもにUnixプラットフォームで多く用いられている。移植性の高いパッケージで、多くの種類のUNIXプラットフォーム、Windows、macOS、VMS、Amiga OSや、Unix-likeなオープンソースなOSで動作するよう開発されている。
ファイル形式とプログラム
Netpbmでは、netpbm format と総称される画像ファイルフォーマット(形式)を定義している。
Netpbmパッケージには220以上のプログラムが含まれている。ほとんど全てについて、その名前には "pbm"、"pgm"、"ppm"、"pam"、"pnm" 等が少なくとも1つ必ず付いている。たとえば pamscaleは画像を10%縮小するプログラム、pamcompは画像を重ねて合成するプログラム、pbmtextは文字列を画像にするプログラム、pnmquantは画像中の色数を減らすプログラムである。
Netpbmパッケージでは、たとえばPBM形式を.bmpに変換するときになどに、変換プログラムを連続させて使うことができる。
pgmtoppm "#FFFFFF" somepic.pbm > somepic.ppm
ppmtobmp somepic.ppm > somepic.bmp
この例は以下のようにすれば、 パイプを使えば、コマンド入力の回数を減らし、途中で作られているsomepic.ppmファイルを作らずに済ませることができる。
pgmtoppm "#FFFFFF" somepic.pbm | ppmtobmp > somepic.bmp
以上のようにNetpbmは、Unix系OSなどの(CUIシェルの)パイプラインをうまく活用する、いわゆるUNIX哲学などでも引用される(カーニハンとプラウガーの)Software Tools のアプローチで全体が設計(デザイン)されている。
さらに、画像フォーマットを変換するプログラムとしては、ABC という画像フォーマットがあったとすると、ABCtopnm というようなプログラムと、pnmtoABC というようなプログラムが提供されている(注: "pnm" の部分は "ppm" などのこともある)。これにより pnm を中間形式とすることで、たとえばX11のダンプ形式 (XWD) をMacintoshのPICTに変換するには xwdtopnm と ppmtopict をパイプでつなげればよい (PNMを出力するプログラムはPBM、PGM、PPMのいずれかを出力する。またPNMを読み込むプログラムはそのどの形式も読み込める) 。具体的には次のようになる。
cat myscreenshot.xwd | xwdtopnm | ppmtopict > myscreenshot.pct
xwdコマンドの標準出力をそのままパイプへの入力とすれば、中間的なファイルを一切作らなくても済む。
xwd | xwdtopnm | ppmtopict > myscreenshot.pct
開発の経緯
白黒二値のビットマップ画像のデータ形式であるPBM形式は、プレーンテキストとして電子メールで受送信でき、ASCIIコードが廃れた後でも使える画像フォーマットを開発する目的で、1980年代にJef Poskanzerが考案した。
PBM形式の画像を扱うツールを開発するために、Pbmplusというライブラリが開発された。これはPBM提案者のJef Poskanzerによるもので、1988年にリリースされた。続いて彼はPGM形式およびPPM形式を提唱し、それを扱うために拡張したPbmplusをリリースした。Pbmplusは1991年12月10日までリリースが続いた。
1993年に、そのときにはすでに開発が止まっていたPbmplusの代替となるライブラリとしてNetpbmが開発された。これはPbmplusに世界各地から寄せられた修正案を適用し、まとめ直したものであった。その後1995年にまた開発が中断したが、1999年からは現在のメンテナBryan Hendersonが開発を引き継いでいる。
Netpbmという名前は、インターネットを通じて多くのプログラマたち共同作業を行っていたことからついたものである (NetBSDやNethackも同様にしてついた名前である)。
関連項目
外部リンク