Praggerとnetpbmで作る画像→AA変換ツール

Rubyを使って何か面白いものを作ってみよう!


高倉 利明
株式会社ケイビーエムジェイ

2008/9/24

一般的な画像をアスキーアートに変換するツールを作ってみる。さらに出力にバリエーションを持たせてみよう(編集部)

 本記事では、Praggerとnetpbmという2つのライブラリを用いて、画像からアスキーアート(以下AA)を作成して出力するツールについて説明します。「Rubyを使って何か面白いものを作ってみよう!」という筆者の興味に基づいているため、作成したツールが実用的かどうかは度外視しています。

 今回は以下の環境を前提としています。関連ソフトウェアについてはあらかじめインストールしておいてください。

・OS

Ubuntu 8.04 (i386)
apt-get、aptitudeなどが使える状態が望ましいです。

・関連ソフトウェア

Ruby 1.8.6
Rubygems 1.2.0
Subversion 1.4.6

Praggerって何?

 本当に一言でいってしまうと「Rubyで作られたPlagger」です。Plaggerとは、Perlで記述されたRSSフィードの収集を主たる目的として開発されたツールです。このPlaggerにインスパイアされてRubyで記述されたツールがPraggerです。

関連リンク:
リンク Pragger
http://pragger.ikejisoft.com/wiki

 強引にまとめると、

  1. どこかから何かを入力して
  2. ある形に変換して
  3. どこかに出力する

ツールとなります。今回の記事で作成するツールに当てはめると、

  1. ローカルフォルダから画像ファイルを入力して
  2. アスキーアートに変換して
  3. コンソール、電子メール、IRCチャットへ出力する

ツールとなります。

今回作成するツールのイメージ

 PraggerのインストールはSubversionリポジトリから直接取得して適当なフォルダに配置します。以下は/usr/local/praggerにエクスポートする例です。

takakura@ubuntu-vm:~$ sudo svn export http://pragger.ikejisoft.com/svn/pragger/trunk/ /usr/local/pragger

 本記事ではPraggerの詳細については説明を省きます。Praggerの公式サイトに詳しい説明がありますので参照してください。

関連記事:
リンク 一足早く「Plagger」の便利さを実感してみよう
http://www.atmarkit.co.jp/fnetwork/rensai/5minplagger/01.html

netpbmライブラリ群によるAA変換

 今回の目的の1つである「画像→AA変換」を実現するために、netpbmライブラリについて説明します。

 netpbmは、UNIX環境下で昔から広い範囲で使用されている画像変換ライブラリです。特徴としては単体のコマンドではなく、用途ごとに別々のコマンドに分かれており、組み合わせることでさまざまな処理を実行することが可能となっています。

netpbmでできること(画像をクリックすると拡大します)

 本記事ではnetpbmライブラリ群を利用して画像ファイルからAAに変換することを行っています。

ちなみに今回の方法で生成できるのは一般的にAAとして認識されている「2バイト文字を含むJISアート」ではなく、「1バイトASCII文字のみを使用したアスキーアート」です。生成データは等幅ASCII文字のみで構成されているので、一般的なAA使用方法(某掲示板へ張り付けるなど)ではまともに使用できませんのであしからず。

 筆者の環境ではapt-getコマンドでnetpbmライブラリをインストールしました。yumやソースコードからのインストールなども可能です。

takakura@ubuntu-vm:~$ sudo apt-get install netpbm

 netpbmには、非常に多くのコマンドが存在します。ここでは詳しい言及を避け、JPEG画像ファイルをpbmファイル(モノクロ画像)にするコマンドに注目します。

takakura@ubuntu-vm:~$ giftopnm test.gif | ppmtopgm | pgmtopbm | > test.pbm

 各コマンドの出力はパイプでつなげられるので、一気にフォーマットを変換できます。

 
1/3

Index
Praggerとnetpbmで作る画像→AA変換ツール
Page1
Praggerって何?
netpbmライブラリ群によるAA変換
  Page2
プラグインの作成
画像→AA変換
電子メール出力プラグイン
IRC出力プラグイン
  Page3
複数先への出力を平然とやってのけるッ!!
これからの発展形を目指して

Coding Edgeフォーラム トップページ

 Ruby/Rails関連記事
プログラミングは人生だ
まつもと ゆきひろのコーディング天国
 ときにプログラミングはスポーツであり、ときにプログラミングは創造である。楽しいプログラミングは人生をより実りあるものにしてくれる
生産性を向上させるRuby向け統合開発環境カタログ
Ruby on Rails 2.0も強力サポート
 生産性が高いと評判のプログラミング言語「Ruby」。統合開発環境を整えることで、さらに効率的なプログラミングが可能になる
かんたんAjax開発をするためのRailsの基礎知識
Ruby on RailsのRJSでかんたんAjax開発(前編)
 実はAjaxアプリケーション開発はあなたが思うよりも簡単です。まずはRuby on Railsの基礎知識から学びましょう
Praggerとnetpbmで作る画像→AA変換ツール
Rubyを使って何か面白いものを作ってみよう!
 一般的な画像をアスキーアートに変換するツールを作ってみる。さらに出力にバリエーションを持たせてみよう
コードリーディングを始めよう
Railsコードリーディング〜scaffoldのその先へ〜(1)
 優れたプログラマはコードを書くのと同じくらい、読みこなす。優れたコードを読むことで自身のスキルも上達するのだ
  Coding Edgeフォーラムフィード  2.01.00.91


Coding Edge フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

>

Coding Edge 記事ランキング

本日 月間