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

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


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

2008/9/24

複数先への出力を平然とやってのけるッ!!

 さあ、早速アスキーアートを出力させてみましょう。まずは@ITのfaviconを入力画像として変換してみます。

・標準出力

 手始めにコンソール画面に標準出力してみます。標準出力する処理はPraggerに標準添付されているstdoutプラグインを使用します。入力する画像は@ITのfaviconです。YAMLファイルは以下のようになります。

- module: image_to_aa
  config:
    file: /home/samba/share/favicon.ico
    size_mode: 1
- module: stdout
config_stdout.yaml

 これを実行すると、下記のような出力が行われます。

takakura@ubuntu-vm:~$ ruby /usr/local/pragger/pragger.rb -p plugin/ -c config_stdout.yaml
I, [2008-09-15T23:18:01.535996 #7409] INFO -- : exec plugin image_to_aa
I, [2008-09-15T23:18:01.552522 #7409] INFO -- : exec plugin stdout

               o o
         o M M"o"o""ooo
       o"o"o" "  " " o"oo
      o"o"   o oo oooo"o"oo
    o"o"o  "o"M M M oo  "ooo
    o"o"  "M M    "o"o  "ooo
    o"o"  M M     "o"o   "oo
    "oM  "o"o"    M"o"  o"o"
    "o"o  "o"o    o"o"  o"o"
    "o"oo "M M M"o"oM M M M
      "o"o  " M " " " " "o
       " M M o o o oo"
         "o"o"o"o"o"o"
               " "

・電子メール出力

 次に変換したAAを電子メールで送信してみましょう。入力する画像は@ITのアイドルあどみちゃんを選びました。YAMLファイルは以下のようになります。

- module: image_to_aa
  config:
    file: /home/samba/share/admichan.jpg
    size_mode: 1
- module: send_mail
  config:
    subject: TEST AA !
    from: takakura@sample.com
    to: takakura@sample.com
    host: localhost
    port: 25
config_mail.yaml

 これを実行すると、以下の画像のようにメールが送信されます。

takakura@ubuntu-vm:~$ ruby /usr/local/pragger/pragger.rb -p plugin -c config_mail.yaml

アスキーアートに変換されたあどみちゃんが電子メールで送られてくる

・IRC出力

 最後にAAをIRCに投稿してみます。入力する画像は@ITの苦労人アドミンくんです。YAMLファイル例は以下のようになります。

- module: image_to_aa
  config:
    file: /home/samba/share/admin.gif
    size_mode: 1
- module: send_irc
  config:
    host: irc.freenode.net
    port: 6667
    channel: "#takakura"
    nick: testkbmj
    user: testkbmj
    realname: testreal
config_irc.yaml

 この処理は、実際の動作をムービーでご覧ください。

takakura@ubuntu-vm:~$ ruby /usr/local/pragger/pragger.rb -p plugin -c config_irc.yaml



これからの発展形を目指して

 今回作成したツールには、カスタマイズする余地がたくさん残されています。

・画像収集

 このツールでは、ローカルフォルダにある画像1枚を変換対象としましたが、これを任意の場所(例えばGoogle画像検索結果など)から集めてきて入力とすると面白いかもしれません。

・AA変換パラメータ調整

 画像変換をnetpbmのデフォルトパラメータで行いましたが、出力するAAサイズやアンチエイリアシング、コントラストなどのパラメータを指定できるとよいでしょう。

・IRC投稿のブラッシュアップ

 今回作成したIRC出力ライブラリは、毎回サーバに接続することやサーバからのPING未対応など、正直あまりよい作りではありません。IRCライブラリを使用し、botに投稿を任せるなどのブラッシュアップが必要です。

 以上、駆け足で紹介してみましたが、いかがだったでしょうか。

 PraggerではRSSフィードを用いていろいろなデータを出力することが多いのですが、今回はあえてネットワークとは無関係なプラグインを作成してみました。Praggerの魅力の一端を知っていただければ幸いです。

 また、今回使用したnetpbm以外の方法でAA変換を実装する場合、以下のライブラリが使えます。これらを使いこなすと、さらに高度な変換が可能となるでしょう。

  • 高機能AAライブラリ「AALIB
  • AALibのRubyラッパー「AALIB-Ruby
  • カラー出力も可能な「libcaca

 今回は言及できませんでしたが、Praggerやnetpbmにはまだまだたくさんの機能が備わっています。皆さんもぜひ一度使用してみてはいかがでしょうか。

3/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 記事ランキング

本日 月間