Ruby で画像を扱う

Imlib2-Ruby を使って画像を扱ってみます。
多用な形式をサポートし読み書き等も速い Imlib2 という画像処理ライブラリがあり、 Rubyバインディングである Imlib2-Ruby が公開されています。

Ubuntu でインストールするには apt-get を使えばいいらしい。

$ sudo apt-get install libimlib2-ruby

Mac の場合は Imlib2でImageMagickより3倍高速かつ美しいサムネイル画像の生成 - 昼メシ物語 を参照。

ピクセルごとグレースケールに変換する例。

require 'imlib2'

img = Imlib2::Image.load("src.jpg")

img.h.times do |y|
  img.w.times do |x|
    c = img.pixel(x, y)
    gray = (0.299 * c.r + 0.587 * c.g + 0.114 * c.b).to_i
    c.r = c.g = c.b = gray
    img.draw_pixel(x, y, c)
  end
end

img.save("dst.jpg")

このほか、ブラーやフリップなどのメソッドがあらかじめ用意されているので、すべてがすべてピクセルごと扱う必要はありません。