Getting metadata in swift by UIImagepickerController

匿名 (未验证) 提交于 2019-12-03 02:01:02

问题:

I'm trying to implement the answer in iOS 8 UIImage Metadata for Objective-C in SWIFT as follows

//source: http://stackanswers.com/questions/24227578/ios-8-uiimage-metadata func metaDataFromAssetLibrary(info: NSDictionary) {      var assetURL = info.objectForKey(UIImagePickerControllerReferenceURL) as NSURL     var assetLibrary = ALAssetsLibrary()     assetLibrary.assetForURL(assetURL as NSURL, resultBlock: {         (asset: ALAsset!) in             var metadata: NSDictionary = asset.defaultRepresentation().metadata() as NSDictionary             NSLog ("imageMetaData from AssetLibrary %@",metadata);          }, failureBlock: {             (error: NSError!) in              NSLog("Error!")     })  }

I'm calling it with

func imagePickerController(picker: UIImagePickerController!, didFinishPickingMediaWithInfo info: NSDictionary!){      // https://stackoverflow.com/questions/3088874/didfinishpickingmediawithinfo-return-nil-photo     picker.dismissViewControllerAnimated(true, completion: nil)      let image = info.objectForKey("UIImagePickerControllerOriginalImage") as UIImage      PHPhotoLibrary.sharedPhotoLibrary().performChanges({         let createAssetRequest = PHAssetChangeRequest.creationRequestForAssetFromImage(image)         let assetPlaceholder = createAssetRequest.placeholderForCreatedAsset         let albumChangeRequest = PHAssetCollectionChangeRequest(forAssetCollection: self.assetCollection, assets: self.photosAsset)          albumChangeRequest.addAssets([assetPlaceholder])         }, completionHandler: {(success, error)in             NSLog("Adding Image to Library -> %@", (success ? "Sucess":"Error!"))             picker.dismissViewControllerAnimated(true, completion: nil)     })     metaDataFromAssetLibrary(info)  }

which results in a "fatal error: unexpectedly found nil while unwrapping an Optional value"

回答1:

Try this code:

let metadata = info[UIImagePickerControllerMediaMetadata] as? NSDictionary     let image = info[UIImagePickerControllerOriginalImage] as? UIImage


回答2:

If you get images from camera, you can get metadata from info[UIImagePickerControllerMediaMetadata].

HOWEVER, when you choose images from photo albums, there is no info[UIImagePickerControllerMediaMetadata] but info[UIImagePickerControllerReferenceURL] !



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!