Recortar imágenes con RMagick y attachment_fu

posted on 10 Apr 2008 |

Attachment_fu no está preparado para realizar crop de imágenes, así que tendremos que hacerle una pequeña modificación para disponer de esta funcionalidad. Editamos el archivo rmagick_processor.rb, ubicado en el directorio processors, dentro de los archivos del plugin, y cambiamos el siguiente método:

# Performs the actual resizing operation for a thumbnail
def resize_image(img, size)
  size = size.first if size.is_a?(Array) && size.length == 1 && !size.first.is_a?(Fixnum)
  if size.is_a?(Fixnum) || (size.is_a?(Array) && size.first.is_a?(Fixnum))
    size = [size, size] if size.is_a?(Fixnum)
    img.crop_resized!(*size)
  else
    img.change_geometry(size.to_s) { |cols, rows, image| image.crop_resized!(cols, rows) }
  end
  self.temp_path = write_to_temp_file(img.to_blob)
end

Ahora cuando configuremos los atributos de la imágen en el modelo correspodiente, podemos hacer esto:

has_attachment :content_type => :image, 
               :storage => :file_system,
               :max_size => 500.kilobytes,
               :resize_to => '400>',
               :thumbnails => { :cropped => '50x50!' }