1

を使用して画像から場所の詳細を取得しようとし ていますが、非推奨になっているUIImagePickerControllerReferenceURLことがわかりましたPHAsset.fetchAssets(withALAssetURLs: [URL], options: opts)。場所の詳細を取得するのを手伝ってください。

? を使用して実行できますPHAssetCollectionか。もしそうなら、私を助けてください

   public func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any])
{
    print(info)
    let chosenImage = info[UIImagePickerControllerOriginalImage] as! UIImage
    selectedImage.contentMode = .scaleAspectFit
    selectedImage.image = chosenImage
    dismiss(animated:true, completion: nil)

    if let URL = info[UIImagePickerControllerReferenceURL] as? URL {
        let opts = PHFetchOptions()
        opts.fetchLimit = 1
        let assets = PHAsset.fetchAssets(withALAssetURLs: [URL], options: opts)
        let asset = assets[0]
        print(asset.location)
        // The location is "asset.location", as a CLLocation

        // ... Other stuff like dismiss omitted
    }
}
4

1 に答える 1

1

これまでに見つけた唯一の解決策は、iOS 11でもiOS 10コードブロックを使用し、UIImagePickerControllerReferenceURL非推奨のメッセージを無視することです(キーはまだ存在し、iOS 11で機能します)

import AssetsLibrary

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {

    if let imageUrl = info[UIImagePickerControllerReferenceURL] as? NSURL{
        print(imageUrl.absoluteString)  //"assets-library://asset/asset.JPG?id=ED7AC36B-A150-4C38-BB8C-B6D696F4F2ED&ext=JPG"


        // access image from URL
        let assetLibrary = ALAssetsLibrary()
        assetLibrary.asset(for: imageUrl as URL! , resultBlock: { (asset: ALAsset!) -> Void in
            if let actualAsset = asset as ALAsset? {
                let assetRep: ALAssetRepresentation = actualAsset.defaultRepresentation()
                let iref = assetRep.fullResolutionImage().takeUnretainedValue()
                let image = UIImage.init(cgImage: iref)
                self.img.image = image
            }
        }, failureBlock: { (error) -> Void in
        })
    }

    dismiss(animated: true, completion: nil)
}

これが役立つことを願っています。

于 2017-12-12T07:32:29.563 に答える