Sha256: 146d6c9e2cbcc19974468f769d99bf281676e5ffaafb1bf286cad27004484e82

Contents?: true

Size: 1.77 KB

Versions: 1

Compression:

Stored size: 1.77 KB

Contents

require 'gd2'
module Technoweenie # :nodoc:
  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
            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
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
attachment_zen-1.0.1 lib/technoweenie/attachment_fu/processors/gd2_processor.rb