harukazepc’s blog

インターネッツとAndroidなどが大好きです。あとは日々のことなど。

RMagickでトリミング

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
© harukazepc️