カメラロールで写真を選択し、その写真の位置情報を取得したい。
パソコンで言うとこの写真を右クリックしてプロパティにある緯度、経度の座標です。
パソコンでは緯度経度が確認できるので写真に記録さている座標をプログラムに使いたい。
しかし、print("info[.phAsset] as? URL",info[.phAsset] as? URL)
でnilとなる。
ここのサイトを参考にし、同じようにしているのになぜnilとなるのでしょうか?
https://cpoint-lab.co.jp/article/202004/14791/
写真の中の位置情報の取得方法を教えていただきたいです。
写真を取得するとところまでは出来ています。
よろしくお願いします。
追記
print("info[.mediaMetadata]",info[.mediaMetadata])でもnilとなる。
print("info[.originalImage]",info[.originalImage])は Optional(<UIImage:0x28320cea0 anonymous {4032, 3024}>) と表示され取得できている。
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) { print("info[.phAsset] as? URL",info[.phAsset] as? URL) if let assetURL = info[.phAsset] as? URL { let result = PHAsset.fetchAssets(withALAssetURLs: [assetURL], options: nil) let asset = result.firstObject if let asset = asset { asset.requestContentEditingInput(with: nil, completionHandler: { contentEditingInput, info in let url = contentEditingInput?.fullSizeImageURL let inputImage = CIImage(contentsOf: url!)! // CIImage から画像のメタデータのGPSを取得する if inputImage.properties["{GPS}"] as? Dictionary<String,Any> == nil { // GPS 情報の取得に失敗した時の処理 print("GPS Faild") } else { // GPS 情報の取得に成功した時の処理 let gps = inputImage.properties["{GPS}"] as? Dictionary<String,Any> var latitude = gps!["Latitude"] as! Double let latitudeRef = gps!["LatitudeRef"] as! String var longitude = gps!["Longitude"] as! Double let longitudeRef = gps!["LongitudeRef"] as! String if latitudeRef == "S" { latitude = latitude * -1 } if longitudeRef == "W" { longitude = longitude * -1 } print("latitude",longitude,"latitude",longitude) } }) } } }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/02 01:39
2020/08/02 02:52
2020/08/02 03:58