base.send :extend, ClassMethods
base.alias_method_chain :process_attachment, :processing
end
-
+
module ClassMethods
# Yields a block containing an RMagick Image for the given binary data.
def with_image(file, &block)
callback_with_args :after_resize, img
end if image?
end
-
+
# 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.thumbnail!(*size)
+ elsif size.is_a?(String) && size =~ /^c.*$/ # Image cropping - example geometry string: c75x75
+ dimensions = size[1..size.size].split("x")
+ img.crop_resized!(dimensions[0].to_i, dimensions[1].to_i)
else
- img.change_geometry(size.to_s) { |cols, rows, image| image.resize!(cols, rows) }
+ img.change_geometry(size.to_s) { |cols, rows, image| image.resize!(cols<1 ? 1 : cols, rows<1 ? 1 : rows) }
end
- self.temp_path = write_to_temp_file(img.to_blob)
+ img.strip! unless attachment_options[:keep_profile]
+ temp_paths.unshift write_to_temp_file(img.to_blob)
end
end
end
end
-end
\ No newline at end of file
+end