最近カメラに凝っていますが、ストレージが安くなったこともあり、つい大量に撮影してしまって整理が大変です。
デジカメの写真にはEXIFというフォーマットで撮影情報が含まれているのはよく知られています。exifrはそれをrubyから扱うことのできるライブラリです。
まずgem install exifr
でインストールします。
そして以下のようなコードで画像(jpgまたはtiff)からEXIF情報を取り出します。
get_exif_data.rb
@exif = EXIFR::JPEG.new('/path/to/file.jpg')
# カメラのモデル名
puts @exif.model # => "NIKON D7000"
# シャッタースピード。Rationalで返る
puts @exif.exposure_time.to_s # => "1/640"
# F値。Rationalで返る
puts @exif.f_number.to_f.to_s # => "5.6"
# レンズ焦点距離(ミリメートル)。Rationalで返る
puts @exif.focal_length.to_i # => "300"
# 35mm(いわゆるフルサイズ)換算のレンズ焦点距離
puts @exif.focal_length_in_35mm_film.to_i # => "450"
# ISO値
puts @exif.iso_speed_ratings # => "100"
# 更新日時。RAWを現像した場合などは撮影日時ではなくなるので注意
puts @exif.date_time
# 撮影日時
puts @exif.date_time_original
# 写真の縦横サイズ
puts @exif.pixel_x_dimension
puts @exif.pixel_y_dimension
さらに詳しくは@exif[0].to_hash
のキーや、EXIFフォーマットの解説(こことか)を参考にして下さい。
撮影データをまとめてDBに入れたり、EXIF情報つきのフォトビューアを開発したり使い道は色々ありそうです。