Sha256: aebc145834e2d6e0be6e21d57707f31be967d46e3c828b3ef02a7b9e15309431

Contents?: true

Size: 1.98 KB

Versions: 3

Compression:

Stored size: 1.98 KB

Contents

require 'red_artisan/core_image/processor'

module AttachmentFu # :nodoc:
  module Processors
    module CoreImageProcessor
      def self.included(base)
        base.send :extend, ClassMethods
        base.alias_method_chain :process_attachment, :processing
      end
      
      module ClassMethods
        def with_image(file, &block)
          block.call OSX::CIImage.from(file)
        end
      end
              
      protected
        def process_attachment_with_processing
          return unless process_attachment_without_processing
          with_image do |img|
            self.width  = img.extent.size.width  if respond_to?(:width)
            self.height = img.extent.size.height if respond_to?(:height)
            resize_image_or_thumbnail! img
            callback_with_args :after_resize, img
          end if image?
        end

        # Performs the actual resizing operation for a thumbnail
        def resize_image(img, size)
          processor = ::RedArtisan::CoreImage::Processor.new(img)
          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)
              processor.fit(size)
            else
              processor.resize(size[0], size[1])
            end
          else
            new_size = [img.extent.size.width, img.extent.size.height] / size.to_s
            processor.resize(new_size[0], new_size[1])
          end
          
          processor.render do |result|
            self.width  = result.extent.size.width  if respond_to?(:width)
            self.height = result.extent.size.height if respond_to?(:height)
            
            # Get a new temp_path for the image before saving
            temp_paths.unshift Tempfile.new(random_tempfile_filename, AttachmentFu.tempfile_path).path
            result.save self.temp_path, OSX::NSJPEGFileType
            self.size = File.size(self.temp_path)
          end
        end          
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
futuresinc-attachment_fu-1.0.5 lib/attachment_fu/processors/core_image_processor.rb
futuresinc-attachment_fu-1.0.6 lib/attachment_fu/processors/core_image_processor.rb
futuresinc-attachment_fu-1.0.7 lib/attachment_fu/processors/core_image_processor.rb