Sha256: 4d048b642d5c151c598a1bb8788f23088b91fca20d8da63bc9a3bb7ea8133d68
Contents?: true
Size: 1.78 KB
Versions: 3
Compression:
Stored size: 1.78 KB
Contents
#encoding: utf-8 require 'shellwords' module Coalla class ImageUploader < CarrierWave::Uploader::Base include CarrierWave::RMagick storage :file def store_dir "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}" end # You can call this method in your model # For example # before_save if: :image_changed? do # image.set_image_properties # end def set_image_properties return if !model || !file model.send(setter(:file_name), file.filename) if model.respond_to?(setter(:file_name)) model.send(setter(:size), file.size) if model.respond_to?(setter(:size)) model.send(setter(:content_type), file.content_type) if model.respond_to?(setter(:content_type)) if model.respond_to?(setter(:width)) && model.respond_to?(setter(:height)) w, h = `identify -format "%wx %h" #{file.path.shellescape}`.split(/x/).map { |dim| dim.to_i } model.send(setter(:width), w) model.send(setter(:height), h) end end # You can call this method with process in your uploader def watermark return if !model || !model.respond_to?(getter(:watermarked?)) || !model.send(getter(:watermarked?)) manipulate! do |img| logo = Magick::Image.read(Rails.root.join('app/assets/images/watermark.png')).first img.composite(logo, Magick::SouthEastGravity, 0, 0, Magick::OverCompositeOp) end end private def setter(name) opt = model.class.uploader_options[mounted_as] || {} if opt[:prefixed] "#{mounted_as}_#{name}=" else "#{name}=" end end def getter(name) opt = model.class.uploader_options[mounted_as] || {} if opt[:prefixed] "#{mounted_as}_#{name}" else "#{name}" end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
coalla-cms-0.7.0.0 | lib/coalla/uploaders/image_uploader.rb |
coalla-cms-0.6.1.1 | lib/coalla/uploaders/image_uploader.rb |
coalla-cms-0.6.0.9 | lib/coalla/uploaders/image_uploader.rb |