@Konboi memo

主に技術に関してつらつらと。

iPhoneで撮影した写真が横向きになってしまう場合のcarrierwaveでの対処法

はじめに

カメラで撮影した写真には、位置情報や時間、画像の方向などの情報が含まれています。 それらの写真情報のことを Exiff というそうです。

Exifについてはこちらに詳しく掲載されていました。

iPhone,iPad の場合は、横向き撮影した際に最適化されるようにExif情報が付与されてしまいます。

( 詳しくはこちらのサイトで説明してあります。)

今回はこのExif情報ではまったので、解決方法をメモしておく。

解決方法

今回、画像のアップロードにはcarrierwaveを使用しています。

class PhotoUploader < CarrierWave::Uploader::Base
  include CarrierWave::RMagick

  process :fix_exif_rotation

  ...

  def fix_exif_rotation
    manipulate! do |img|
      img.auto_orient!
      img = yield(img) if block_given?
      img
    end
  end

  version :thumbnail do
    process :resize_to_fill => [135, 135]
  end

  version :m do
    process :resize_to_fit => [1000, 600]
  end

end

重要なところはfix_exif_rotation です。

ここで、写真の自動最適化を削除しています。

以下がサンプル

f:id:Konboi:20130701161048p:plain

まとめ

  • carrierwaveの設定がいけないのかと大分はまりました。
  • iPhoneExifが知らなかったので勉強になりました。
  • carrierwaveとs3の連携が鼻血でるぐらい簡単なので、それは別途ブログにまとめる。
  • 写真がフリスクなのは特に意味はありません。


HerokuではじめるRailsプログラミング入門
掌田 津耶乃
ソフトバンククリエイティブ
売り上げランキング: 107,961