Sha256: 1faaa098724c8dd3ed0e9f862371b1333114d2a93a378cd7fa0a57c5ab97b85c

Contents?: true

Size: 1.74 KB

Versions: 1

Compression:

Stored size: 1.74 KB

Contents

require 'mini_magick'
module AttachmerbFu # :nodoc:
  module Processors
    module MiniMagickProcessor
      def self.included(base)
        base.send :extend, ClassMethods
        base.alias_method_chain :process_attachment, :processing
      end
      
      module ClassMethods
        # Yields a block containing an MiniMagick Image for the given binary data.
        def with_image(file, &block)
          begin
            binary_data = file.is_a?(MiniMagick::Image) ? file : MiniMagick::Image.from_file(file) unless !Object.const_defined?(:MiniMagick)
          rescue
            # Log the failure to load the image.
            logger.debug("Exception working with image: #{$!}")
            binary_data = nil
          end
          block.call binary_data if block && binary_data
        ensure
          !binary_data.nil?
        end
      end

    protected
      def process_attachment_with_processing
        return unless process_attachment_without_processing
        with_image do |img|
          resize_image_or_thumbnail! img
          self.width  = img[:width] if respond_to?(:width)
          self.height = img[:height]  if respond_to?(:height)
          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
        if size.is_a?(Fixnum) || (size.is_a?(Array) && size.first.is_a?(Fixnum))
          if size.is_a?(Fixnum)
            size = [size, size]
            img.resize(size.join('x'))
          else
            img.resize(size.join('x') + '!')
          end
        else
          img.resize(size.to_s)
        end
        self.temp_path = img
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
attachmerb_fu-0.0.1 lib/attachmerb_fu/processors/mini_magick_processor.rb