LoginSignup
3
4

More than 5 years have passed since last update.

railsのcarriewaveでrmagickを使って正方形の画像を作成する

Posted at

前提

この記事、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! っていうのを使わなきゃいけないらしく。

それを利用することでなんとか無事リサイズできました。

3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4