Swift

Swift:EXIFの書き込みアプローチ

EXIFの書き込み方がわからないので、どのようにアプローチしていけばいいか、頭の中を整理することにしました。

いずれにしてもひとりごとです。なお、GPSプロパティを読み込んで緯度・経度に変換する、Google Mapsの緯度・経度をGPSプロパティに変換するメソッドは、テストプログラムから分離し、GPSアプリとして独立させました。

EXIFの読み込み方は?

  1. 写真のファイルパスをNSURLに変換。
  2. イメージソースの作成。
  3. EXIFを含む辞書全体(プロパティ)が読み込める。
  4. プロパティからGPSだけ部分的に読み込める。

var filepath:String = NSHomeDirectory() + “/Desktop/test.jpg”
var wimageURL: NSURL = NSURL(fileURLWithPath:filepath)!//NSURL
var wimageRef:CGImageSourceRef = CGImageSourceCreateWithURL (wimageURL as CFURLRef, nil) //イメージソース
var wimageDic:NSDictionary = CGImageSourceCopyPropertiesAtIndex (wimageRef, 0, nil) //EXIFやGPSを含むプロパティ全体
var wgps:AnyObject? = wimageDic.objectForKey (kCGImagePropertyGPSDictionary) //GPSのみ抽出

※ CGImageSourceの中には、写真のプロパティを参照するメソッドは存在するが、書き込むものは見あたらない。

CGImageはキーワードでは?

NSBitmapImageRepが大元にあり、JPEGやPINGがその中に含まれているらしい。ここから探し出すとなると、量が多いので厄介そう。

  • プロパティは、写真画像をsaveするときに一緒に書き込まれるというようなobjective-Cのサンプルコードがあったような気がする。今のところ、これが唯一の手がかり。
  • もし写真を読み込む必要があるなら、① 画像劣化しない方法が何か、② Photos(写真)を直接ハンドリングする方法は何か、この2点の解明も必要。
  • 現在想定している緯度・経度修正は、Google Mapsの緯度・経度をcopy & pasteすることを前提にしている。
  • しかし、地図を表示し、ピンから緯度・経度を拾うような方法の検討も必要か?
  • 地図を入れた機能を実現するには、ディベロッパー契約が必要。
  • それでは、Google MapsのAPIを使えないか?
  • Google MapsのAPIはiOSはあるようだが、OS Xは見あたらなかった。ないのか?
  • サムネール表示の検討。

こうなってくると、「写真の書き込み & EXIFの作成・書き込み」から当ってみてはどうだろう。あるいは「写真のsave」のどこかにプロパティをどうするかというのがある可能性は?

Categories: Swift, 技術