如何从照片中获取 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 数据的主要内容,如果未能解决你的问题,请参考以下文章

不丢失精度的获取照片的Gps经纬度

web获取照片EXIF信息(例如:拍照方向相机设备型号拍摄时间ISO 感光度GPS 地理位置等数据)

web获取照片EXIF信息(例如:拍照方向相机设备型号拍摄时间ISO 感光度GPS 地理位置等数据)

如何使用python 3从内部gps获取数据?

Java获取照片的Exif信息,并解析GPS

用啥手机软件可以快速获取经纬度?