Swift

Swift:EXIFの書き込み

EXIFの書き込みは、当初シナリオ通り、写真ファイルと一緒に書き込むことで実現しました。

これは、正直、よくわかっていません。

UIImagePickerControllerで撮影した写真にExif・位置情報を書き込んで保存する方法Swiftを使って「ハワイに行ったふりカメラ」をつくるなどを見るには見たのですが、Objective-Cだったり、内容が少し違うような気がして、徹底して追求する根気がありませんでした。

それでも、何となく次のようにやったらEXIFの書き込みができてしまいました。もしかすると、まちがいがあるかもしれませんが、今後、UIを作っていく段階でバグがあれば修正する機会があると思います。

func execWriteEXIF(pFilepath:String, pEXIF:NSDictionary, pExportFilepath:String) { //
var wimageURL: NSURL = NSURL(fileURLWithPath: pFilepath)! //写真のFilepathからNSURLを作成する。
var cgImage:CGImageSourceRef = CGImageSourceCreateWithURL (wimageURL, nil)//イメージソース作成
var imageData:NSMutableData = NSMutableData()//
var dest:CGImageDestinationRef  = CGImageDestinationCreateWithData (imageData, CGImageSourceGetType(cgImage), 1, nil)//
CGImageDestinationAddImageFromSource (dest, cgImage, 0, pEXIF as Dictionary )//
CGImageDestinationFinalize(dest) //
imageData.writeToFile(pExportFilepath, atomically: true) //写真ファイルの書き込み
}

細かい話として、緯度・経度のシンタクス・チェックをきっちりしないと、プレビューが落ちます。90度、180度、60分、60秒の最大値チェックとEWNSチェックは必須。また、-はマイナスでなく区切りのようです。これは、除去しないといけません。

Categories: Swift, 技術