webネタ

Webエンジニアが業務に関係することをメモしていく

rubyでサムネイル作成

画像を指定のサイズでうまいことリサイズし、余白を埋め、透かしをいれる。

require 'RMagick'

file = ARGV[0]

def main(file, w, h)
  img = Magick::Image.read(file).first
  filename = img.filename

  img = watermark resize img, w, h
  img.write "dest/#{filename}"
end

def resize(img, w, h)
  img = img.resize_to_fit!(w, h)
  bg = Magick::Image.new(w, h) do self.background_color = 'white' end
  bg.composite!(img, Magick::CenterGravity, Magick::OverCompositeOp)
end

def watermark(img)
  mark = Magick::Image.read('./watermark.png').first
  img.composite!(mark, Magick::SouthWestGravity, Magick::OverCompositeOp)
end

main file, 100, 100

phpのアレと違い、rubyでの画像加工は直感的に書けていい。