画像データから撮影日を抽出し、テーブルに保存する
choorkerをリニューアルするため、コツコツと開発中。
choorkerでは、ユーザが投稿した画像から撮影日を抜き出し、それを「釣った日時」として保存している。なのでユーザは画像を投稿する際に、わざわざ日時を入力しなくてもいい。
該当のモデルにて下記のようなロジックを組み込む。
画像のアップロードにはcarriewave、編集はminimagickを使用している。
class Sample < ActiveRecord::Base mount_uploader :image, ImageUploader before_save :get_exif def get_exif img = MiniMagick::Image.open(image.path) datetime = img.exif["DateTimeOriginal"] if datetime.nil? then date = DateTime.now else date = DateTime.strptime(datetime, '%Y:%m:%d %H:%M:%S') end # 取得した日付をcatched_atに保存 self.catched_at = date end end
※ 関係無い部分のコードは省略
DateTimeOriginalが取得できなかった場合は、投稿日時を登録するようにしている。