君の瞳はまるでルビー - Ruby 関連まとめサイト

RMagick について

最終更新: 2015-04-02 (木) 09:52:48 (1961d)

RMagick は画像ファイルの読み込み、書き込み、画像の加工ができるライブラリです。

インストール

RMagick は Pure Ruby のライブラリではなく、環境依存の native ライブラリです。

バックエンドに ImageMagick という環境依存の native ライブラリを使っており、ImageMagick が環境にインストールされていることが利用の前提となっています。

以下のページでは Windows 7 で RMagick をインストールする方法について説明します。

使い方

RMagick の最も簡単なサンプルを示します。

# coding: UTF-8

require 'rmagick'

image = Magick::ImageList.new("from.jpg")
image.write("to.jpg")

このサンプルは from.jpg というファイルを読み込んで、to.jpg というファイルに読み込んだ画像を書き出します。

このように

  • Magick::ImageList.new で画像を読み込み。
  • Magick::Image.write で画像を書き込む。

ことができます。

Magick::Image には、各種画像を加工するメソッドがあり、それらのメソッドを利用して画像を加工していきます。

以下は2倍に拡大した画像を得るための操作の例です。

image = Magick::ImageList.new("from.jpg")
image = image.scale(2.0)
image.write("to.jpg")

代表的な加工メソッドを示します。

メソッド名操作
scale拡大・縮小
rotate回転
flop左右反転
flip上下反転
blur_imageぼかし

その他、画像の情報を取得することもできます。

image = Magick::ImageList.new("from.jpg")
puts image.columns  # 画像の幅
puts image.rows     # 画像の高さ

# ピクセル情報の取得
pixels = image.get_pixels(0, 0, image.columns, image.rows)
puts pixels[0].red      # 赤(色のビット数によって 0 ~ 255, 65535, 4294967295, 上限は 2 ** Magick::QuantumDepth で求められる。)
puts pixels[0].green    # 緑
puts pixels[0].blue     # 青
puts pixels[0].to_hsla  # [色相, 彩度, 明度, 透明度]

store_pixels で画像を自由に加工することもできます。

また、バイナリレベルでの操作も可能です。

image = Magick::ImageList.new("from.jpg")
binary = image.to_blob  # 画像からバイナリを取得する
new_image = Magick::Image.from_blob(binary).shift  # バイナリから Magick::Image オブジェクトを生成する

例は示しませんが、文字を書き込むことなんかもできます。ここまで分かれば、後はリファレンスで目的のメソッドを探せば目的の加工ができると思います。