X-Git-Url: https://projects.mako.cc/source/selectricity-live/blobdiff_plain/a38724bea6c09b479a93948b6ef4ef61edd24f39..e75d29998f5348be83dde4b6fd8f5aa437c2dc74:/vendor/plugins/attachment_fu/lib/technoweenie/attachment_fu/processors/core_image_processor.rb diff --git a/vendor/plugins/attachment_fu/lib/technoweenie/attachment_fu/processors/core_image_processor.rb b/vendor/plugins/attachment_fu/lib/technoweenie/attachment_fu/processors/core_image_processor.rb new file mode 100644 index 0000000..fc85c31 --- /dev/null +++ b/vendor/plugins/attachment_fu/lib/technoweenie/attachment_fu/processors/core_image_processor.rb @@ -0,0 +1,59 @@ +require 'red_artisan/core_image/processor' + +module Technoweenie # :nodoc: + 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, Technoweenie::AttachmentFu.tempfile_path).path + result.save self.temp_path, OSX::NSJPEGFileType + self.size = File.size(self.temp_path) + end + end + end + end + end +end + +