如何从PHAsset获取原始图像和媒体类型?

我的**GMImagePickerController**从照片应用程序返回所选图像的列表。

代码如下。

  - (void)assetsPickerController:(GMImagePickerController *)picker didFinishPickingAssets:(NSArray *)assetArray { NSLog(@"%@",assetArray); NSLog(@"GMImagePicker: User ended picking assets. Number of selected items is: %lu", (unsigned long)assetArray.count); } 

像这样的assetArray返回结果,我从照片应用程序中选择了3张图片

  ( " 1AEEF04A-F8AB-4019-AAB5- 2875CFD8F8E3/L0/001 mediaType=1/0, sourceType=1, (425x425), creationDate=2016-02-03 13:53:17 +0000, location=0, hidden=0, favorite=0 ", " 50489C13-55D0-4518-B290-B01B99D66996/L0/001 mediaType=1/0, sourceType=1, (425x335), creationDate=2016-02-03 13:53:08 +0000, location=0, hidden=0, favorite=0 ", " D0A466B2-9CF2-4FD9-A12F-07921A1D0E8F/L0/001 mediaType=1/0, sourceType=1, (425x365), creationDate=2016-02-03 13:53:04 +0000, location=0, hidden=0, favorite=0 " ) 

现在的问题是我想从上面的结果中获取OriginalImagemediaType以将图像存储到文档目录中。 请帮我解决这个问题。

  NSLog(@"====%@====",assetArray); for(int i=0;i 

使用PHImageManager,我们可以获得完整的原始图像。

要检查媒体类型,您可以使用phasset的以下属性

 if asset.mediaType == .image{ //do anything for image asset }else if asset.mediaType == .video{ //do anything for video asset }else if asset.mediaType == .audio{ //do anything for audio asset } 

要从PHAsset获取原始图像,您可以执行以下操作:

 let requestImageOption = PHImageRequestOptions() requestImageOption.deliveryMode = PHImageRequestOptionsDeliveryMode.highQualityFormat let manager = PHImageManager.default() manager.requestImage(for: asset, targetSize: PHImageManagerMaximumSize, contentMode:PHImageContentMode.default, options: requestImageOption) { (image:UIImage?, _) in // process the original image } 

您可以获取原始文件的URL并检查内容。 有了这个,您可以获得EXIF数据和所有内容:

  /* Get the URL of the source image in the Asset */ func getAssetURL(asset: PHAsset, completion: @escaping (_ url: URL?) -> Void) { let options = PHContentEditingInputRequestOptions() options.isNetworkAccessAllowed = false asset.requestContentEditingInput(with: options, completionHandler: { (contentEditingInput, dictionary) in completion(contentEditingInput?.fullSizeImageURL) }) }