RMagickでの画像加工で、
- 固定サイズのサムネイルを作る
- でも、単純に指定サイズへのリサイズ/縮小では、画像が歪むのでやだ
- 縦横どちらかに縮尺比をあわせ、画像自体の縦横比は変えずに、真ん中を切り取る
ということがしたい時です。
結論:crop_resized! (たぶん)
http://studio.imagemagick.org/RMagick/doc/image1.html#crop_resized
ていうか、http://studio.imagemagick.org/RMagick/doc/index.html:RMagickのユーザーズガイドの充実っぷりがやばい。
メソッド実行のサンプルも載っているので、とてもイメージしやすいです。たのしい。
Rails的に、attachment_fuとかで画像を扱ってサムネイルを生成しようとしてました。
/vender/attachment_fu/lib/technoweenie/processors/trimming_processor.rbとか作ってそこでcrop_resized!を。
model側は以下のような感じで。
has_attachment( :thumbnails=>{ :small=>[80,80] }, :processor=>"Trimming" )
ユーザに直で返すなら、こんなメソッド?
def trim_and_send_image(blob_image,options={}) width = options.delete(:width) || 250 height = options.delete(:height) || 250 trim_image = Magick::Image.from_blob(blob_image).first.crop_resized!(width,height) send_data(trim_image.to_blob, options) end