2007/10/03(水) [n年前の日記]
#1 [prog] RMagickで実験
とりあえず RMagick を入れてみた。
ActiveScriptRuby 1.8.637 には、RubyGems-0.9.4 が同梱されてるらしいので、RMagick-1.15.9_IM-6.3.5-8-Q8.zip をDL・解凍して、中に入ってる ImageMagick-6.3.5-8-Q8-windows-dll.exe をインストール後、
おそらく注意すべき点は、
最新版のImageMagickを使えず、ちと古い版になってしまうのは痛い。その環境全体・ruby以外からも ImageMagick を呼び出した際に、古い版が呼び出されてしまうから。RMagick が使う ImageMagick の場所を特定・指定できれば、最新版と共存もできるのだろうけど。そのへんどうにかできないものだらうか。
実行するとこんな感じの結果に。
ActiveScriptRuby 1.8.637 には、RubyGems-0.9.4 が同梱されてるらしいので、RMagick-1.15.9_IM-6.3.5-8-Q8.zip をDL・解凍して、中に入ってる ImageMagick-6.3.5-8-Q8-windows-dll.exe をインストール後、
gem install rmagick-1.15.9-win32.gemだけで入った…と思う。
おそらく注意すべき点は、
- スペースを含んだフォルダ名以下には入れない・解凍しない。
- 経験的に、Linux関係から来てる各種プログラムは、フォルダ名にスペースが含まれてるとトラブルを起こしやすいので。大丈夫だと言われても、とりあえず避けておく。
- ImageMgaick は、RMagick のバイナリに同梱されてるものをインストールする。
- 最初、ImageMagick 最新版 (ImageMagick-6.3.5-10-Q8-windows-dll.exe)を入れたら、「DLLがねえ」と言われてハマった。
- スクリプト中の、require 'RMagck' の前に、require 'rubygems' を入れる。
- RubyGems でインストールしたものを使うときは、require 'rubygems' の一文が必要になるっぽい。
最新版のImageMagickを使えず、ちと古い版になってしまうのは痛い。その環境全体・ruby以外からも ImageMagick を呼び出した際に、古い版が呼び出されてしまうから。RMagick が使う ImageMagick の場所を特定・指定できれば、最新版と共存もできるのだろうけど。そのへんどうにかできないものだらうか。
◎ _RMagick 1.15.0 User's Guide and Reference :
ドキュメントらしい。英文だからさっぱり。
◎ とりあえずpixel値を読んで表示 :
#!/usr/bin/ruby require 'rubygems' require 'RMagick' include Magick fname = "test.png" img = ImageList.new(fname) width = img.columns # 画像幅取得 height = img.rows # 画像高さ取得 puts "width=" + width.to_s puts "height=" + height.to_s puts "type=" + img.image_type.to_s # 画像種類表示 puts "total color=" + img.total_colors.to_s # 使用色数表示 puts "depth=" + img.depth.to_s # ビットの深さ表示 height.times do |y| width.times do |x| puts img.pixel_color(x,y).to_s # pixel値取得 end endrubyの書き方としては絶対に何かおかしいだろうけど、初心者だからということで。 *1
実行するとこんな感じの結果に。
width=8 height=16 type=PaletteType total color=8 depth=1 red=0, green=0, blue=0, opacity=0 red=255, green=255, blue=255, opacity=0 red=0, green=255, blue=255, opacity=0 red=255, green=0, blue=255, opacity=0 red=0, green=0, blue=255, opacity=0 red=255, green=255, blue=0, opacity=0 red=0, green=255, blue=0, opacity=0 red=255, green=0, blue=0, opacity=0 red=0, green=0, blue=0, opacity=0 (以下略)ドットさえ読めれば後はどうにかできるだろう…。処理は遅いだろうけど。
*1: 「なんだこの書き方は。なっちゃいねえプゲラ」とか優越感ゲームしてる暇があるなら添削してブログ公開して共有知にしてくれると嬉しいかもしれず。などと思わないでもない。
[ ツッコむ ]
以上です。