RMagick メソッド

Install

前回の記事(win7 64bit)

Class List

Class: Magick::Image
How to use RMagick

require

rmagick.rb
require 'RMagick'
include Magick

resize

rmagick.rb
#variable example
width = 100
height = 100
scale = 0.5

#image
img = Magick::ImageList.new("image.jpg")

#rename
img.write("rename.jpg")

#resize
#ある程度、容量と画質が保たれる
img.resize(width, height).write("resize.jpg")
img.resize(scale).write("resize2.jpg")

#scale
#resizeより荒く軽い。
img.scale(width, height).write("scale.jpg")
img.scale(scale).write("scale2.jpg")

#thumbnail
#元画像を10%縮小するためのメゾット、実行速度が早いがサイズが大きい。
img.thumbnail(width, height).write("thamb.jpg")
img.thumbnail(scale).write("thamb2.jpg")

#sample
#中間色を作らない。生成画像は画質が悪いが軽い。
img.sample(width, height).write("sample.jpg")
img.sample(scale).write("sample2.jpg")

transform

rmagick.rb
#image
img = Magick::ImageList.new("image.jpg")

#flop(上下反転)
img.flop.write("flop.jpg")

#flip(左右反転)
img.flip.write("flip.jpg")

#rotate(回転)
deg = 45
img.rotate(deg).write("rotate.png")

filter

rmagick.rb
#wave(波紋)
img.wave(amplitude=10.0, wavelength=10.0).write("wave.jpg")

#blur_image(ぼかし)
img.blur_image(radius=10.0, sigma=10.0).write("blur.jpg")

text

rmagick.rb
#drow
img = ImageList.new("image.jpg")
drow = Draw.new

#annotate
#(画像, 幅, 高さ, X座標, Y座標, 文字)
draw.annotate(img, 100, 100, 0, 0, "foo").write("annotate.jpg")

list

rmagick.rb
#images
images = Magick::ImageList.new("image1.jpg","image2.jpg")

#append(上下結合)
images.append(true).write("append.jpg")

#append(左右結合)
images.append(false).write("append02.jpg")

#array
files = [
"image1.jpg",
"image2.jpg",
"image3.jpg",
"image4.jpg"
]
imageList = Magick::ImageList.new

files.each do |file|
imageList.read(file).resize(0.5).write("min_#{file}")
puts file
end

##folder
Dir.glob(["*.jpg", "*.png"]).each do |file|
img = ImageList.new(file)
img.resize(0.5).write("min_#{file}")
puts file
end

##path
def imageScale(scale, path = "")
path = File.expand_path(path)
if Dir.exist?(path)
files = Dir.glob("#{path}/*.jpg")
unless files.length == 0
files.each do |file|
name = file.split("/")[-1]
img = ImageList.new(file)
img.resize(scale).write("#{path}/min_#{name}")
puts name
end
else
puts "Error:notfound image"
end
else
puts "Error:notfound directory"
end
end
#ダブルクォートはバックスラッシュに注意。
path = 'C:/coding/vagrant/ruby/rmagick/bk'
imageScale(0.5, path)

other

rmagick.rb
#display(確認)
#画像がウィンドウが表示され、閉じるまで処理を一時停止。
#(--with-x11 [Mac])
img.display

#strip(EXIF情報の消去)
img.strip!

最後に

スクレイピングで吸い上げたブツを、その流れで軽くイジれるので有難い。本来もっと複雑な画像描写や処理ができるそうですが、趣味で利用する分にゃ上記のメゾッド程度で事が足りてしまう。