この投稿は 旧ブログ stnoctps-blog Tumblr 出張所 から引っ越してきました。
Carrierwave 標準だと、resize_ 系が固定サイズしか指定できなかったので、倍率指定して拡大縮小できるようにしてみた。
動作確認環境
Ruby 1.9.3-p327
Ruby on Rails 3.2.9
carrierwave (0.7.1)
rmagick (2.13.1)
/lib/carrierwave/dynamic_resize.rb
module CarrierWave
module DynamicResize
module ClassMethods
def resize_to_power(power)
process :resize_to_power => power
end
end
def resize_to_power(power)
if @file
img = ::Magick::Image::read(@file.file).first
if model
@img_width = img.columns
@img_height = img.rows
@resize_width = @img_width * power
@resize_height = @img_height * power
resize_to_fill(@resize_width, @resize_height)
end
end
end
end
end
/app/uploaders/hoge_uploader.rb
class HogeUploader < CarrierWave::Uploader::Base
:
include CarrierWave::DynamicResize
:
version :half do
process :resize_to_power => 0.5
end
:
version :quarter do
process :resize_to_power => 0.25
end
end
/config/initilaizers/carrierwave.rb
:
require File.join(Rails.root, “lib”, “carrierwave”, “dynamic_resize”)