如何从照片中获取 GPS 数据
Posted
技术标签:
【中文标题】如何从照片中获取 GPS 数据【英文标题】:How obtain GPS data from a photo 【发布时间】:2018-10-25 20:18:08 【问题描述】:几天来,我一直在尝试寻找一种从照片库中的照片获取 GPS 位置的方法。我正在使用 UIImagePicker 来获取照片,但互联网上发布的任何解决方案似乎都不起作用。我知道我应该将 UIImage 转换为 PHAsset,但是人们到处都在使用一种名为 fetchAssets(withALAssetURLs: [URL], options: PHFetchOptions?)
的已弃用方法。有什么办法可以做到这一点?非常感谢
【问题讨论】:
【参考方案1】:希望对你有帮助:-
//step1:- import Photos
//step2:- when you presenting imagepicker controller
if phphotoLibrary.authorizationStatus() == .authorized || PHPhotoLibrary.authorizationStatus() == .authorized
PHPhotoLibrary.requestAuthorization [weak self](_) in
// Present the UIImagePickerController
self?.present(self!.imagePicker, animated: true, completion: nil)
swift3.0 和 Swift4.0
//step3:-
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any])
//obtaining saving path
let fileManager = FileManager.default
let documentsPath = fileManager.urls(for: .documentDirectory, in: .userDomainMask).first
let imagePath = documentsPath?.appendingPathComponent("image.jpg")
// extract image from the picker and save it
if let pickedImage = info[UIImagePickerControllerOriginalImage] as? UIImage
let data = UIImageJPEGRepresentation(pickedImage, 0.75)
data.write(toFile: localPath!, atomically: true)
let coordinate = (info[UIImagePickerControllerPHAsset] as? PHAsset)?.location?.coordinate
print(coordinate?.latitude ?? "No latitude found")
print(coordinate?.longitude ?? "No longitude found")
self.dismiss(animated: true, completion: nil)
斯威夫特 4.2
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any])
//obtaining saving path
let fileManager = FileManager.default
let documentsPath = fileManager.urls(for: .documentDirectory, in: .userDomainMask).first
let imagePath = documentsPath?.appendingPathComponent("image.jpg")
// extract image from the picker and save it
if let pickedImage = info[UIImagePickerController.InfoKey.originalImage] as? UIImage
let imageData = pickedImage.jpegData(compressionQuality: 0.75)
try! imageData?.write(to: imagePath!)
let coordinate = (info[UIImagePickerController.InfoKey.phAsset] as? PHAsset)?.location?.coordinate
print(coordinate?.latitude ?? "No latitude found")
print(coordinate?.longitude ?? "No longitude found")
self.dismiss(animated: true, completion: nil)
谢谢
【讨论】:
抱歉,我如何使用这个 sn-p 来查找照片的位置? @LorenzoSantini 在代码中看到 "let imagepath" 哪个是图像的路径。 对不起,我不要图片路径,我要gps定位。 @LorenzoSantini 很抱歉我的理解不好,现在检查我更新的代码。 我在我的应用程序中实现了您的代码,但随后它在我的控制台中打印“未找到纬度”“未找到经度”错误,尽管在照片库中这些照片似乎具有本地化数据。你知道出了什么问题吗?以上是关于如何从照片中获取 GPS 数据的主要内容,如果未能解决你的问题,请参考以下文章
web获取照片EXIF信息(例如:拍照方向相机设备型号拍摄时间ISO 感光度GPS 地理位置等数据)