前提・実現したいこと
画像を画面からアップロードする際に、一覧画面用表示用に横400px, 縦300pxのサムネイル画像を作成しようとしています。
(一覧画面で、複数列構成の画像をずれないように並べて表示するため)
画像登録・サムネイル作成にはrails6 + carrierwave + rmagickを使用しており、画像アップロード時に以下のアップローダー(ソースコード参照)を作成し、resize_to_fill
メソッドを使用しています
発生している問題・エラーメッセージ
横長画像に対しては、問題なく、横400×縦300のサムネイル画像を作成できるのですが、
元画像が縦長画像の場合は、サムネイルが縦400×横300となってしまいます。
該当のソースコード
ruby
1class DefaultUploader < CarrierWave::Uploader::Base 2 include CarrierWave::RMagick 3 4 storage :file 5 6 def store_dir 7 "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}" 8 end 9 10 version :thumb do 11 process resize_to_fill: [400, 300] 12 end 13end
試したこと
以下でrmagckのresize_to_fillの仕様を確認しましたが、縦長画像の場合の取り扱いは不明だったため、質問させていただきました。
(https://rmagick.github.io/image3.html#resize_to_fill)
知りたいこと
- rmagickでは、resize_to_fillメソッド含め、やりたいこと(縦長、横長に関わらず幅高さ指定のサムネイルを作成すること)を実現することは無理なのか
- やりたいことを実現するために他のライブラリなどがあれば教えてほしい(ただしrails環境上で使用できるもの)
補足情報(FW/ツールのバージョンなど)
ruby 2.6.4
rails 6.0.3.1
carrierwave 2.1.0
rmagick 4.1.2
ImageMagick 7.0.10-19
あなたの回答
tips
プレビュー