(ruby)(WindowsXP + ImageMagick + RMagick の 環境を作ってみた)
rubyで画像を色々と編集してみたいなとも思い
rubyにライブラリがあるかどうかを調べてみた所
とりあえず RMagickを使ってみることにしました
インストールで ちょっと いろいろともたついてしまったんですが
最終的には rubyforgeに 二つともまとめてあるのを発見 笑)
何だったのだ あの苦労は・・・ 笑)
ちゃんと分かっている人なら 全て最新版の環境を構築できるんでしょうけどね・・・ 笑)
(rubyforge) http://rubyforge.org/projects/rmagick/ から(rmagick-win32)に入り
そのページの下のほうを見ると
ImageMagickのインストーラー と RMagickのgem を zipにまとめてあるものがあります
この記事を書いている時の最新版は
「RMagick-2.9.0-ImageMagick-6.4.8-6-Q8.zip」
でした
これを解凍すれば
「ImageMagick-6.4.8-6-Q8-windows-dll.exe」 と
「rmagick-2.9.0-x86-mswin32.gem」 が 出てきます
ImageMagickは普通にインストールすれば 特に問題は無いかと思います
RMmagick は コマンドプロンプトから
とすれば gemでインストール出来ると思います
続いて VC++2008 の 「再頒布可能パッケージ」をインストールします
「VC++2008」 や 「VC++ 2008 Express Edition」などを 既にインストールしていれば
この作業は 必要ないかと思います
これは マイクロソフトのダウンロードセンターから入手する事ができます
「Microsoft Visual C++ 2008 Redistributable Package (x86)」もしくは
「Microsoft Visual C++ 2008 再頒布可能パッケージ (x86)」などで検索して出てくる
ダウンロードセンターのページから 「vcredist_x86.exe」をダウンロードして インストールします
最後にPCの再起動をします
これは ImageMagickが 環境変数を書き換えていますので それをきちんと反映させるために
一度は再起動させたほうが よろしいかと思います
まぁ ここまでやったからには いろいろと 勉強しないとですね・・・ 笑)
そろそろ rubyも まとめページ 作ろうかしら? 笑)
まだまだ 基本中の基本を 勉強中ですけど
とりあえず 一個 サンプルをば・・・
ある画像(背景)の上に 別の画像を貼り付ける操作の 基本ですね
個人的には その書き方はちと抵抗があるので あえて includeせずに 毎度 「Magick::」と指定してます
VisualBasicの 「With Magick 〜 End With」みたいに 明確に指示できるのなら
省略して書くのも ありなんですけどね 笑)
・・・もしかして rubyにもそういうのあるのかな?・・・、 ん〜 初心者だし わかんなーい 笑)
rubyにライブラリがあるかどうかを調べてみた所
とりあえず RMagickを使ってみることにしました
インストールで ちょっと いろいろともたついてしまったんですが
最終的には rubyforgeに 二つともまとめてあるのを発見 笑)
何だったのだ あの苦労は・・・ 笑)
ちゃんと分かっている人なら 全て最新版の環境を構築できるんでしょうけどね・・・ 笑)
(rubyforge) http://rubyforge.org/projects/rmagick/ から(rmagick-win32)に入り
そのページの下のほうを見ると
ImageMagickのインストーラー と RMagickのgem を zipにまとめてあるものがあります
この記事を書いている時の最新版は
「RMagick-2.9.0-ImageMagick-6.4.8-6-Q8.zip」
でした
これを解凍すれば
「ImageMagick-6.4.8-6-Q8-windows-dll.exe」 と
「rmagick-2.9.0-x86-mswin32.gem」 が 出てきます
ImageMagickは普通にインストールすれば 特に問題は無いかと思います
RMmagick は コマンドプロンプトから
gem install -l rmagick-2.9.0-x86-mswin32.gem |
続いて VC++2008 の 「再頒布可能パッケージ」をインストールします
「VC++2008」 や 「VC++ 2008 Express Edition」などを 既にインストールしていれば
この作業は 必要ないかと思います
これは マイクロソフトのダウンロードセンターから入手する事ができます
「Microsoft Visual C++ 2008 Redistributable Package (x86)」もしくは
「Microsoft Visual C++ 2008 再頒布可能パッケージ (x86)」などで検索して出てくる
ダウンロードセンターのページから 「vcredist_x86.exe」をダウンロードして インストールします
最後にPCの再起動をします
これは ImageMagickが 環境変数を書き換えていますので それをきちんと反映させるために
一度は再起動させたほうが よろしいかと思います
まぁ ここまでやったからには いろいろと 勉強しないとですね・・・ 笑)
そろそろ rubyも まとめページ 作ろうかしら? 笑)
まだまだ 基本中の基本を 勉強中ですけど
とりあえず 一個 サンプルをば・・・
ある画像(背景)の上に 別の画像を貼り付ける操作の 基本ですね
#!ruby -Ks require 'RMagick' # 貼り付けたい画像をロードする img = Magick::ImageList.new("<ここにロードさせたい画像ファイル名>") # 以後 # 背景は 貼り付けたい画像より 縦横50px大きい画像を生成する # という事を前提とします # 単純に無地の背景を作る場合 # 色を付けたい時は attribute の background_color(背景色)にセットします # rubyのAttribute(アトリビュート) ≒ 他言語でいうProperty(プロパティ) ですね back_img = Magick::Image.new(img.columns+50, img.rows+50){ self.background_color = '#000060' } # グラデーションを背景にする場合、(GradientFillクラスを利用する場合) my_gradient = Magick::GradientFill.new(0, 0, 0, 0, '#ffeea0', '#ac7040') back_img_gradient = Magick::Image.new(img.columns+50, img.rows+50, my_gradient) # グラデーションを背景にする場合、(ImageMagickの機能を利用する場合) back_img_gradient2 = Magick::Image.read("gradient:#ff5000-#00ff60"){ self.size = "#{img.columns+50}x#{img.rows+50}" }[0] # ImageMagickの機能の ビルトインパターンを背景にする場合 # 今回は HEXAGONS というパターンを使っています back_img_pattern = Magick::Image.read("pattern:HEXAGONS"){ self.size = "#{img.columns+50}x#{img.rows+50}" }[0] # ImageMagickの機能の プラズマ(フラクタル)を背景にする場合 back_img_plasma = Magick::Image.read("plasma:fractal"){ self.size = "#{img.columns+50}x#{img.rows+50}" }[0] # Image.read と なっているところの最後が [0] となっていることに 気付くと思いますが # Image.readメソッドの場合 Imageオブジェクトの配列 で 返ってくるので # Imageオブジェクトで受けたい場合は 代入時に [0] で # 一つ目の要素である事を明記する必要があります # # もし [0] 無しで back_img_gradient2 に 代入した場合は # 使う時に back_img_gradient2[0] とすれば 同じ結果になります、が # 配列で受けるよりも Imageオブジェクトで受けたほうが # この場合は いろいろとスマートに処理できると思われます # 背景に画像を貼り付けて ファイルに保存します back_img.composite(img, Magick::CenterGravity, Magick::OverCompositeOp).write("01_normal.jpg") back_img_gradient.composite(img, Magick::CenterGravity, Magick::OverCompositeOp).write("02_gradient.jpg") back_img_gradient2.composite(img, Magick::CenterGravity, Magick::OverCompositeOp).write("03_gradient2.jpg") back_img_pattern.composite(img, Magick::CenterGravity, Magick::OverCompositeOp).write("04_pattern.jpg") back_img_plasma.composite(img, Magick::CenterGravity, Magick::OverCompositeOp).write("05_plasma.jpg")「include RMagic」 とすれば 「Magick::」を書く必要はなくなりますが
個人的には その書き方はちと抵抗があるので あえて includeせずに 毎度 「Magick::」と指定してます
VisualBasicの 「With Magick 〜 End With」みたいに 明確に指示できるのなら
省略して書くのも ありなんですけどね 笑)
・・・もしかして rubyにもそういうのあるのかな?・・・、 ん〜 初心者だし わかんなーい 笑)