2017-12-12 14 views
0

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 
    } 
} 
+0

다른 옵션은 이미지를 doc 디렉토리에 저장하고 해당 경로를 사용할 수 있다는 것입니다. –

답변

1

도와주세요 경우 지금까지 발견 유일한 해결책은 심지어 아이폰 OS (11)의 아이폰 OS (10) 코드 블록을 사용하여 단지 (키가 여전히 존재하고 아이폰 OS 11 일)에 UIImagePickerControllerReferenceURL되지 않는 메시지를 무시하는 것입니다

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) 
} 

희망이 도움이 될 것입니다.