Sha256: 389e0fabfb53103c7d6dfd8f982bc42b3a0e9463fd7ac7030c2cb9257cfc1807

Contents?: true

Size: 1.26 KB

Versions: 7

Compression:

Stored size: 1.26 KB

Contents

# encoding: utf-8

class ImageAssetUploader < CarrierWave::Uploader::Base
  include CarrierWave::RMagick

  process :store_geometry

  def store_geometry
    if model
      model.dimensions = dimensions
    end
  end

  # Returns the dimensions of the image as a hash
  def dimensions
    @dimensions ||= begin
      if @file
        img = ::Magick::Image::read(@file.file).first
        { width: img.columns, height: img.rows }
      end
    end
  end

  def scale(scale)
    width  = dimensions[:width]  * scale
    height = dimensions[:height] * scale

    manipulate! do |img|
      img.resize_to_fit!(width, height)
      img = yield(img) if block_given?
      img
    end
  end

  # Override the directory where uploaded files will be stored.
  # This is a sensible default for uploaders that are meant to be mounted:
  def store_dir
    "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
  end

  version :three_quarters do
    process scale: 0.75
  end

  version :half do
    process scale: 0.50
  end

  version :one_quarter do
    process scale: 0.25
  end

  # Create different versions of your uploaded files:
  version :thumb do
    process :resize_to_fit => [100, 100]
  end

  # Only allow images
  def extension_white_list
    %w(jpg jpeg gif png)
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
active_admin_editor-0.3.6 app/uploaders/image_asset_uploader.rb
active_admin_editor-0.3.5 app/uploaders/image_asset_uploader.rb
active_admin_editor-0.3.4 app/uploaders/image_asset_uploader.rb
active_admin_editor-0.3.3 app/uploaders/image_asset_uploader.rb
active_admin_editor-0.3.2 app/uploaders/image_asset_uploader.rb
active_admin_editor-0.3.1 app/uploaders/image_asset_uploader.rb
active_admin_editor-0.3.0 app/uploaders/image_asset_uploader.rb