通过UIImagepickerController在swift中获取元数据
我试图在SWIFT中的Objective-C的iOS 8 UIImage元数据中实现如下的答案
//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) }
导致一个“致命的错误:意外地发现零,而展开一个可选值”
试试这个代码:
let metadata = info[UIImagePickerControllerMediaMetadata] as? NSDictionary let image = info[UIImagePickerControllerOriginalImage] as? UIImage
如果你从相机获取图像,你可以从信息[UIImagePickerControllerMediaMetadata]获取元数据。
但是,当你从相册中select图像,没有信息[UIImagePickerControllerMediaMetadata],但信息[UIImagePickerControllerReferenceURL]!
- 如何在UIScrollView中加载UIViewController
- 如何在Swift中从QR码中保存vCard
- 如果我点击Swift中的button,如何更改图像?
- Swift类“MyClass”没有成员名为“My_Var”
- 如何使用带有标记和参数的Alamofire来上传图片?
- 无法使用types为“(NSMutableURLRequest,(_,_,_)throws – > _”)的参数列表调用“dataTaskWithRequest”
- 在120个字符之后附加readmore标签,并使其在ios中可点击
- 如何检查什么类属于AnyObject?
- 当广告载入失败时,在Swift中隐藏iAd ADBannerView – 没有委托或委托没有实现didFailToReceiveAdWithError