前回投稿した記事では、ImageMagickを使って
写真のExifGPS情報を取得する方法を紹介しました。
プログラムに限らず写真を扱うときには、 写真の中に埋め込まられた情報を 「読み込み・抜き出し・書き込む」は必須ですよね。 前の記事で ImageMagickの基本的な使い方を説明しましたよね。 今回は、ImageMagickを使って写真に埋め込まれたGEOデータ(GPS情報)を取得しましょう...
上の記事で、必要な情報は十分に取得できます。
しかし、純粋なImageMagickコマンドだと他への応用が効きません。
GoogleMapとかMKMapViewとかとか...
と言うのも、
出力される情報が10進数ではないため、
多くの場合、変換が必要になります。
変換作業めんどくさ!!
たくさんの写真からGeoデータを取得しようと思ったら
自動化しないとエライことになるのは明らかだよね。
そんなあなたにピッタリの方法がこちら!!
RMagick
RMagickは、RubyでImageMagickを使用することができるGemです。
これ便利だよね〜〜。
最近のシステムって画像処理は基本みたいになっているから
Railsとか使ってるサービスではほぼ入ってるイメージです。
やること
そんな難しいことはしません。
- カレントディレクトリ内のJPG画像を全件取得
- RMagickを使ってExifGeoデータ取得
- 10進法に変換して出力
前提
おなじみVagrant + Centos7環境です。
Ruby ver. => 2.3.0 周辺なら大丈夫かと。
コード
RMagickなのでrubyで書いてあります。
1 2 3 4 5 6 7 8 9 10 11 12 |
require "rmagick" images = Dir.glob("./*.jpg") images.each do |img| exif_data_latitude = img.get_exif_by_entry('GPSLatitude')[0][1].split(',').map(&:strip) lat = (Rational(exif_data_latitude[0]) + Rational(exif_data_latitude[1]) / 60 + Rational(exif_data_latitude[2])/3600).to_f exif_data_longitude = img.get_exif_by_entry('GPSLongitude')[0][1].split(',').map(&:strip) lon = (Rational(exif_data_longitude[0]) + Rational(exif_data_longitude[1]) / 60 + Rational(exif_data_longitude[2])/3600).to_f STDOUT.puts lat, lon end |
いやぁ〜
Rubyってほんと簡単で良いよね。
バッチでもirbでもどっちでも出来るはずです。
Railsに組み込むのも簡単。
またね〜。