前提
この記事、RMagick で正方形のサムネイルを作成する - Qiitaで解決される方が99%だと思うのですが、自分がRails初心者すぎるあまり解決できなかったのでメモ。環境とかそれ以前の問題なので省略します笑。
Carrierwave+rmagick
画像をアップロードして、簡単なリサイズをしようと思ったらこの組み合わせで使うことが多いと思います。こんな感じに。Rails4 - Carrierwave・Rmagick 導入 - Qiita
app/uploaders/image_uploader.rb
class ImageUploader < CarrierWave::Uploader::Base
include CarrierWave::RMagick
# 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
略
end
問題は冒頭リンクのこれをどうやって上のimage_uploader.rb
に入れるか。
def create_square_image(rmagick, size)
narrow = rmagick.columns > rmagick.rows ? rmagick.rows : rmagick.columns
rmagick.crop(Magick::CenterGravity, narrow, narrow).resize(size, size)
end
結果
app/uploaders/image_uploader.rb
def create_square
manipulate! do |img|
narrow = img.columns > img.rows ? img.rows : img.columns
img.crop(Magick::CenterGravity, narrow, narrow).resize(size, size)
end
end
process :create_square
CarrierWave + RMagick 画像のリサイズをまとめてみました-麺処まつばにあった、manipulate! っていうのを使わなきゃいけないらしく。
それを利用することでなんとか無事リサイズできました。