2014-10-15 5 views
3

Я пытаюсь реализовать ответ в iOS 8 UIImage Metadata для Objective-C в СВИФТЕ следующегоПолучение метаданных в стриже на UIImagePickerController

//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!") 
    }) 

} 

Я звоню его

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) 

} 

, что приводит к «фатальная ошибка: неожиданно обнаружена нуль при разворачивании параметра« Необязательное значение »

ответ

3

Код:

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

'UIImagePickerControllerMediaMetadata' работает только при изображении с камеры, а не в библиотеке фотографий. – rmaddy

0

Если вы получаете изображения с камеры, вы можете получить метаданные из информации [UIImagePickerControllerMediaMetadata].

ОДНАКО, при выборе изображений из фотоальбомов информация отсутствует [UIImagePickerControllerMediaMetadata], но информация [UIImagePickerControllerReferenceURL]!

Смежные вопросы