суббота, 15 декабря 2007 г.

Polaroid thumbnails

Хотите быть способным преобразовывать так картинки на лету?

Я реализовал у себя в одном rails приложении генерацию подобных thumbnails при отправке пользователем картинки с помощью следующего кода:

  def after_save 
thumbnail = Magick::Image.read(image_path).first
cols, rows = thumbnail.columns, thumbnail.rows

thumbnail.crop_resized!(400,300)
thumbnail[:caption] = "\n #{pet.breed.animal.kind}, #{pet.breed.title}, #{pet.name}\n Cost: #{pet.price}$"

thumbnail = thumbnail.polaroid(5 - rand(10)) do
self.gravity = Magick::CenterGravity
self.shadow_color = "black"
self.align = Magick::LeftAlign
self.pointsize = 30
self.font_family = 'comic sans ms'
end

thumbnail.change_geometry!("#{cols}x#{rows}") do |ncols, nrows, img|
img.resize!(ncols, nrows)
end

thumbnail.resize!(200,150)
thumbnail.write(thumbnail_path)
end

Требуется наличие RMagick.

Примечание: делается двойной resize - до и после полароид-эффекта, для более четкого изображения.