読者です 読者をやめる 読者になる 読者になる

iPhoneで撮った画像をアップロード Paperclipで正しい向きのサムネール画像を作る方法

Ruby

http://thoughtbot.com/images/oss/paperclip.png

Ruby on Rails で画像のアップロードを行うのに便利なライブラリー Paperclip
サムネール画像も自動的に作ってくれる優れものです。




ところが、iPhoneを縦向きにして撮影した画像のサムネールが横向きになってしまします!

実は iPhoneで取った画像は全て横長の画像で、縦向きで撮影した画像は、EXIF情報のOrientationに縦向きの情報がセットされています。iPhoneMac等ではこの情報を見て画像を縦に表示してくれます。しかしブラウザーに表示されるサムネールは縦にはなりません。

Paperclipはサムネール作成に ImageMagick を使いますが、ImageMagick には Orientation を見て画像を回転してくれる -auto-orient オプションがあります、素晴らしい!
このオプションをPaperclip の設定に書けば 上手く行くはずですが、その指定方法がなかなかわかりませんでした・・・・・
検索するといくつか出てくるのですが、古いPaperclip用の指定なのか上手く行きません、結局ソースを読みながら試したら以下のように指定すれば良いことが判りました。

class User < ActiveRecord::Base
   ・・・
  has_attached_file :picture, 
    {:styles => {:iphone => "120x120#", :ipad    => "360x360#"},
     :storage => :aws,
     :s3_credentials => "#{Rails.root}/config/s3.yml"}
  ・・・
end

のような設定の場合は以下のように :convert_options を指定します。

class User < ActiveRecord::Base
   ・・・
  has_attached_file :picture, 
    {:styles => {:iphone => "120x120#", :ipad    => "360x360#"},
     :convert_options => {:all => "-auto-orient"},
     :storage => :aws,
     :s3_credentials => "#{Rails.root}/config/s3.yml"}
  ・・・
end