年末進行もやっと一段落、人心地がついたところで今度は忘年会ラッシュですよ! 私は酔って電車に乗ると高確率で寝過ごしてしまうので、iOS 5の新機能「リマインダー」を活用しようかと考えています。リマインダーを設定するまで正気を保っていられればの話ですが。

さて、今回は「Netpbm」について。なにそれ? という向きも多いだろうが、まずはこのページにある画像をご覧いただきたい。そう、こんなことを可能にするコマンド集なのだ。

What's Netpbm?

イメージファイルの扱いは、なにも画像編集ソフトの専売特許ではない。UNIX系OSでもX Window Systemが普及するにつれ、次第にGUIベースのXクライアントを利用するようになったが、それ以前はシェル上でコマンドを使い画像を加工/変換することが一般的だった。その頃誕生したのが、今回取り上げる「Netpbm」だ。

Netpbmは、画像を電子メールで扱えるようプレインテキスト化することを目的に開発された「Pbmplus」の後継プロジェクトだ。当初より、PPM(Portable PixMap)とPGM(Portable GrayMap)、PBM(Portable BitMap)の3形式を中心に構成されるが、現在ではPNGやGIF、JPEGなど多様な画像フォーマットをサポートしている。現在の位置づけをもとにわかりやすくいえば、画像変換コマンド/ライブラリ集、といったところだ。

画像編集ツールやコンバータは、OS X向けに多数公開されているが、「テキストへの変換」を意識したものは意外に少ない。Netpbmはその誕生経緯からして、テキストで出力することが目的であり、その意味で他にない特色を持っていると言っていい。

たとえば、OS X標準装備のアスキーアート作成用コマンド「banner」はASCII以外の文字を扱えないが、Netpbmに収録のコマンドを使えば、(画像化された)漢字をアスキーアート化できる。CUIのため、抵抗を感じる向きもあるだろうが、使い方自体は単純だ。

OS Xに標準装備の「banner」は、ASCII以外の文字を扱うことができない

Netpbmで「漢字アスキーアート作り」

筆者と長年の付き合いがある人はご存知だろうが、写真など一部要素を除き、年賀状はTermial内(EmacsのM-x shellを含む)だけで作成している。宛名印刷はPerlとLaTeXのコンビネーション、裏面はLaTeXで(picture環境やPSTricksを駆使しつつ)デザイン、という決まりだ。当初は明確な理由があったはずだが、いまや年の瀬の餅つきのごとき恒例行事と化している。こうなれば、意地でもコマンドオンリーで作り続けるしかない。

そのデザインだが、締め切り等で切羽詰まって時間切れとなってしまった場合は、やむなくイラスト(EPS)を貼り付けてお茶を濁している。しかし、来年はいい年にしたい。多少の労力はかけるべきでは?

そこで思いついたのが、アスキーアート。行書体かなにかのフォントで、大きめに「賀正」などと印刷するのはわけないことだが、よくみればアスキーアート! というのがいいかと。しかも、1文字1文字が「龍」で構成されているとか。

となれば、Netpbmの出番。LaTeXでフォントサイズの大きい「賀正」を用意して、それをPNG画像に変換、さらにいくつかの段階を経てASCIIに、という流れにはNetpbmに含まれるコマンド群が役に立つからだ。なにより、Terminal内で完結させる、という自らに課した掟も守ることができる。

Netpbmはいくつかのライブラリに依存するため、導入には「MacPorts」を利用する。基礎部分の導入はインストーラを使うしかないためやむをえないが、以後のメンテナンスはすべてTerminal上で済ませることができる。Netpbmも、以下のコマンドを実行するだけで導入完了だ。

Netpbmの導入は「Macports」を使うとラク

$ sudo port -v selfupdate
$ sudo port install netpbm

次に用意するのは「賀正」の文字。筆者はLaTeXを利用するが、フォントの設定まで風呂敷を広げると収拾がつかなくなるので、ここではテキストエディットに書いた文字(フォントサイズ288)をスクリーンショットに撮り、それを素材に使うこととした。

紙幅の都合上、「賀正」はテキストエディットで入力し、その部分をスクリーンショットでPNG画像とした

あとはかんたん。素材のファイル名が「input.png」だとすると、以下のとおりコマンドを実行すればいいのだ。これで、「M」や「o」などASCIIで構成された「賀正」の2文字が、プレインテキストファイル「output.txt」として出力される(出力されたファイルはこちら)。「龍」などの文字で試してみては?

$ pngtopnm input.png | ppmtopgm | pgmtopbm -dither8 | pbmtoascii > output.txt

出力結果をQuickLookし、それをフルスクリーン化したところ。見よ、このムダに大きい「賀」の文字を!

関連記事
年賀状のインクを節約する「inksaver4 無料版」配布キャンペーン (2011年12月6日)
【レビュー】Twitterとも連携!iPhone/iPad/Androidで年賀状を作成できる「筆まめ年賀2012」(2011年12月5日)
【レビュー】美魔女ライターが実践! 無料体験版ソフトと無料テンプレートで作る年賀状 (2011年12月2日)
カシオ、"撮ったアート工房"で年賀状プリントサービス - 写真の加工も簡単 (2011年12月1日)
年賀状をMacで作成、OS X Lionにも対応予定の「宛名職人Ver.18」が発売 (2011年8月19日)