◎したいこと
カメラでカメラで撮影したら、その情報(exifやGPS情報)を一覧表に記録したい。
◎わからないこと
exifデータはprintできたので取得できています。しかし、GPS情報(dopや衛星数)が取得できない。
◎聞きたいこと
リファレンスにkCGImagePropertyGPSDictionary
があったので記録されているものと思っていましたが、そもそもGPS情報(dopや衛星数)は写真を撮ったときに記録されていないのでしょうか?
◎kCGImagePropertyExifDictionaryの呼出し方(使い方)は正しいか?
ファレンスのURL
CGImage プロパティ
https://developer.apple.com/documentation/imageio/cgimageproperties
gpsディクショナルキー
https://developer.apple.com/documentation/imageio/cgimageproperties/gps_dictionary_keys
swift
1 2import UIKit 3 4class ViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate { 5 6 @IBOutlet weak var imageView: UIImageView! //UIImageView 7 @IBAction func launchCamera(_ sender: UIBarButtonItem) {//ツールバーのボタンこの場合カメラボタンに変更済み 8 let camera = UIImagePickerController.SourceType.camera 9 //カメラが利用可能かチェック 10 if UIImagePickerController.isSourceTypeAvailable(camera) { 11// インスタンスの生成 12 let picker = UIImagePickerController() 13 picker.sourceType = camera 14 picker.delegate = self 15 self.present(picker, animated: true) 16 } 17 } 18// 撮影が完了時した時に呼ばれる 19 func imagePickerController(_ picker: UIImagePickerController, 20 didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) { 21// 画像のデータを取得する 22 let image = info[UIImagePickerController.InfoKey.originalImage] as! UIImage 23 self.imageView.image = image 24 25 //写真のメターデータを取得 26 let metadata = info[UIImagePickerController.InfoKey.mediaMetadata] as? NSDictionary 27 let gpsdata = info[UIImagePickerController.InfoKey.mediaMetadata] as? NSDictionary 28 29 // Exifの参照を取得 30 let exif = metadata?.object(forKey: kCGImagePropertyExifDictionary) 31 print(exif) 32 33 // gpsの参照を取得 34 let gps = metadata?.object(forKey: kCGImagePropertyGPSDictionary) 35 print(gps) 36 37 // 撮影した画像をカメラロールに保存 38 UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil) 39 self.dismiss(animated: true) 40 } 41 42 override func viewDidLoad() { 43 super.viewDidLoad() 44 // Do any additional setup after loading the view, typically from a nib. 45 } 46 47 48}
コード改変
import UIKit import PlaygroundSupport let fileUrl = Bundle.main.url(forResource: "test", withExtension: "jpg") let image = UIImage(named:"test.jpg")! //let fileUrl = PlaygroundSupport.playgroundSharedDataDirectory.appendingPathComponent("test.jpg") //let image = UIImage(contentsOfFile: fileUrl.absoluteString) // 以下を該当箇所にコピペすれば良さそうです。 let options = [kCGImageSourceShouldCache as String: kCFBooleanFalse] if let data = NSData(contentsOf: fileUrl!), let imgSrc = CGImageSourceCreateWithData(data, options as CFDictionary) { let metadata = CGImageSourceCopyPropertiesAtIndex(imgSrc, 0, options as CFDictionary) as? [String : AnyObject] if let gpsData = metadata?[kCGImagePropertyGPSDictionary as String] { print(gpsData) } else { print("GPS Data load failed...") } }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/09/29 10:23
2019/09/29 13:08
2019/09/30 08:40
2019/09/30 09:06
2019/09/30 09:07
2019/10/06 06:05 編集
2019/10/06 11:03
2019/10/13 02:30 編集
2019/10/13 03:06 編集
2019/10/13 03:25