【问题标题】:Getting metadata in swift by UIImagepickerController通过 UIImagepickerController 快速获取元数据
【发布时间】:2014-10-15 20:06:49
【问题描述】:

我正在尝试在 SWIFT 中为 Objective-C 实现iOS 8 UIImage Metadata 中的答案,如下所示

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

}

这会导致“致命错误:在展开可选值时意外发现 nil”

【问题讨论】:

    标签: ios swift


    【解决方案1】:

    试试这个代码:

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

    【讨论】:

    • UIImagePickerControllerMediaMetadata 仅在图像来自相机而非照片库时有效。
    【解决方案2】:

    如果你从相机获取图像,你可以从info[UIImagePickerControllerMediaMetadata]获取metadata

    但是,当您从相册中选择图片时,没有info[UIImagePickerControllerMediaMetadata],而是info[UIImagePickerControllerReferenceURL]!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-04
      相关资源
      最近更新 更多