获取PHAsset的本地文件路径

我有一张照片,我希望我的用户能够在Instagram上分享,我需要获取照片的本地文件目录。

但是我将我的图像作为PHAsset获取(不是ALAsset所有其他答案似乎都涵盖了这个主题)。

查看PHAsset文档,我没有看到“本地目录”变量。

你知道如何使用新的ios8 Photo框架从用户相机胶卷中获取照片的路径吗?

这是我在用户照片卷中加载最后一张图片的代码

public func loadLastPhotoIntoGalleryIcon() { if(PHPhotoLibrary.authorizationStatus() != PHAuthorizationStatus.Authorized) { return } var fetchOptions:PHFetchOptions = PHFetchOptions() fetchOptions.sortDescriptors = [NSSortDescriptor(key: "creationDate", ascending: false)] var fetchResult:PHFetchResult = PHAsset.fetchAssetsWithMediaType(PHAssetMediaType.Image, options: fetchOptions) var lastAsset:PHAsset = fetchResult.firstObject as PHAsset var options:PHImageRequestOptions = PHImageRequestOptions() options.version = PHImageRequestOptionsVersion.Current PHImageManager.defaultManager().requestImageForAsset(lastAsset, targetSize: _view.getGalleryIconSize(), contentMode: PHImageContentMode.AspectFill, options: options) { (result, objects) -> Void in self._view.setGalleryIcon(result) } } 

使用内容编辑输入:

 asset.requestContentEditingInputWithOptions(PHContentEditingInputRequestOptions()) { (input, _) in let url = input.fullSizeImageURL } 

确保资产是PHAssetMediaType.Image ,否则在解PHAssetMediaType.Image可选项时可能会崩溃。

 func getImagesFromAsset(anAsset: PHAsset) { PHImageManager.default().requestImage(for: anAsset, targetSize: CGSize(width: 600, height: 600), contentMode: .aspectFill, options: nil, resultHandler: { (image, info) in //resultHandler have info ([AnyHashable: Any]) print(info!["PHImageFileURLKey"]) if let img = image { self.imgv.image = img } }) } 

这可能有助于将其粘贴到CellForRowAt方法中并在参数中传递PHAsset。

是的,您必须将PHAsset转换为ALAsset,然后您可以从ALAsset中获取URL。 像这样:PHImageManager.defaultManager()。requestAVAssetForVideo ….

 PHAsset *asset = YOUR_ASSET; PHImageManager *manager = [PHImageManager defaultManager]; PHImageRequestOptions *options = [PHImageRequestOptions new]; options.synchronous = YES; options.deliveryMode = PHImageRequestOptionsDeliveryModeHighQualityFormat; options.resizeMode = PHImageRequestOptionsResizeModeNone; options.networkAccessAllowed = NO; [manager requestImageForAsset:YOUR_ASSET targetSize:PHImageManagerMaximumSize contentMode:PHImageContentModeDefault options:options resultHandler:^(UIImage *resultImage, NSDictionary *info){ NSURL *filePath = [info valueForKeyPath:@"PHImageFileURLKey"] }]; 

请求资产信息以开始内容编辑会话。

 - (PHContentEditingInputRequestID)requestContentEditingInputWithOptions:(PHContentEditingInputRequestOptions *)options completionHandler:(void (^)(PHContentEditingInput *contentEditingInput, NSDictionary *info))completionHandler; 

包含完整大小图像数据的文件的URL。

 @property(readonly, copy) NSURL *fullSizeImageURL;