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
とか書くと
![スクリーンショット 2016-05-03 22.56.45.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F23873%2F9e1db64c-a2a4-acc6-ab79-e9d9b2885b9c.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=b9edea8b7d8de1788a7a638bad09c30b)
たくさんとれます
めっちゃ便利!すごい!
(ほたるの光がながれてる!お店がしまる!!やばい!!笑)