Carrierwaveを使用して画像をアップロードしているときにexif情報を取り出したい時が有りました。
exifを取得するgemには、
gem 'exifr'
か RMagick
がいいよ見たいなことが書いてある記事がありました。
ので、試してみました。
まずCarrierwaveで作成したUploaderにメソッドを追加しておきます
get_exif_infoの中で作業します。
Carrierwaveの簡単なセッティングはこちら
http://qiita.com/funao/items/cd4c4e33cf43767338e2
app/uploaders/image_uploader.rb
# encoding: utf-8
class ImageUploader < CarrierWave::Uploader::Base
...
process :get_exif_info
def get_exif_info
end
...
end
じゃあ、早速比較して行きます
①exifrの場合
試す場合、gemはインストールしておいてください!
app/uploaders/image_uploader.rb
# encoding: utf-8
class ImageUploader < CarrierWave::Uploader::Base
...
process :get_exif_info
def get_exif_info
exif = EXIFR::JPEG::new(self.file.file)
binding.pry
end
...
end
取得して表示すると
$ p exif
{
:width => 400,
:height => 390,
:bits => 8,
:comments => nil
}
こんな感じでとれます
https://remvee.github.io/exifr/api/index.html
めっちゃ便利です
②RMagickの場合
app/uploaders/image_uploader.rb
# encoding: utf-8
class ImageUploader < CarrierWave::Uploader::Base
...
process :get_exif_info
def get_exif_info
exif = Magick::Image.read(self.file.file).first
binding.pry
end
...
end
$ p exif.properties
とか書くと
たくさんとれます
めっちゃ便利!すごい!
(ほたるの光がながれてる!お店がしまる!!やばい!!笑)