Netpbm

Netpbm
開発元 Bryan Henderson
最新版
10.47.71 / 2018年12月5日 (5年前) (2018-12-05)
リポジトリ ウィキデータを編集
プログラミング
言語
C, Perl, Unix Shell
対応OS Cross-platform
ライセンス various, believed to be DFSG free
公式サイト netpbm.sourceforge.net
テンプレートを表示

Netpbm は画像を扱うプログラムライブラリの、オープンソースのパッケージであり、おもにUnixプラットフォームで多く用いられている。移植性の高いパッケージで、多くの種類のUNIXプラットフォーム、WindowsmacOSVMSAmiga 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) をMacintoshPICTに変換するには xwdtopnmppmtopict をパイプでつなげればよい (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という名前は、インターネットを通じて多くのプログラマたち共同作業を行っていたことからついたものである (NetBSDNethackも同様にしてついた名前である)。

関連項目[編集]

外部リンク[編集]