Swift

Swift:EXIF表示のサンプルプログラムの開発に着手5

EXIFとGPSがNSDictionaryの形式であることは早目にわかったのですが、ログが頭に貼り付いて、値がバイナリや数値かもしれないということまで頭がまわりませんでした。

それで日付・時刻がなぜOptional(2015:04:18 13:04:03)で入っているのか。2015:04:18 13:04:03だけ取り出すにはどうすればいいだろうか。そんなことを考えていました。それでキーの値だけを取り出すメソッドを作ってしまいました。

var date: AnyObject? = exif?.objectForKey(kCGImagePropertyExifDateTimeOriginal)
println(“date=\(date)”) //Optional(2015:04:18 13:04:03)

しかし、そのあとで、はたと思ったのです。

gps = imageDict.objectForKey(kCGImagePropertyGPSDictionary) //GPS辞書
var wLatitude:Int   =   gps?.objectForKey(kCGImagePropertyGPSLatitude) as! Int //
println(“wLatitude=\(wLatitude)”)

この整数の指定はまずいとしても、文字で入っているはずないですよね。結局、次の変換方法に戻ってきました。

度 = int(139.759774167) = 139
分 = int(0.759774167 * 60) = int(45.58645002) = 45

秒 = int(0.58645002 * 60 *1000) / 1000 = 35.187

139°45′35.187″
= 139 + (45 / 60) + (35.187 / 60 / 60)

= 139.759774167

参照:経度・緯度を60進法から10進法へ変換
 

Categories: Swift, 技術