Sha256: 1600c6483f94e644a2658088a679e3f27b5e9a36650061750b71cb48d142a1d3
Contents?: true
Size: 1.72 KB
Versions: 3
Compression:
Stored size: 1.72 KB
Contents
require 'rubygems' require 'gd2' module AttachmentFu # :nodoc: module Processors module Gd2Processor def self.included(base) base.send :extend, ClassMethods base.alias_method_chain :process_attachment, :processing end module ClassMethods # Yields a block containing a GD2 Image for the given binary data. def with_image(file, &block) im = GD2::Image.import(file) block.call(im) end end protected def process_attachment_with_processing return unless process_attachment_without_processing && image? with_image do |img| resize_image_or_thumbnail! img self.width = img.width self.height = img.height callback_with_args :after_resize, img end 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 if size.is_a?(Fixnum) || (size.is_a?(Array) && size.first.is_a?(Fixnum)) if size.is_a?(Fixnum) # Borrowed from image science's #thumbnail method and adapted # for this. scale = size.to_f / (img.width > img.height ? img.width.to_f : img.height.to_f) img.resize!((img.width * scale).round(1), (img.height * scale).round(1), false) else img.resize!(size.first, size.last, false) end else w, h = [img.width, img.height] / size.to_s img.resize!(w, h, false) end temp_paths.unshift random_tempfile_filename self.size = img.export(self.temp_path) end end end end
Version data entries
3 entries across 3 versions & 1 rubygems