PHAsset获取原始文件名称
我想知道是否有任何方法使用PHAsset获取原始文件名?
我使用下面的代码来提取文件信息。
[[PHImageManager defaultManager] requestImageDataForAsset:asset options:requestOption resultHandler:^(NSData *imageData, NSString *dataUTI, UIImageOrientation orientation, NSDictionary *info) { entity.fileUrl = [info objectForKey:@"PHImageFileURLKey"]; entity.filename = [[NSFileManager defaultManager] displayNameAtPath:[ entity.fileUrl path]]; }];
但是,它不会返回原始名称,而是格式为“img_123”的名称,我刚刚检查了官方的苹果文档。 已经引入了一个新的类PHAssetResource
和在iOS 9+中可用的属性originalFilename
。 问题是我使用基于Photos框架的图像select器库CTAssetsPickerController ; 它返回PHAsset
图像作为PHAsset
对象。 PS。 我正在寻找与iOS 8兼容的解决scheme:)。 谢谢!
在iOS 8上,您的解决scheme是正确的(也是唯一的方法)来获取文件名。
在iOS 9上这个工作:
NSArray *resources = [PHAssetResource assetResourcesForAsset:asset]; NSString *orgFilename = ((PHAssetResource*)resources[0]).originalFilename;
也许你可以使用这个方法,它可以在iOS8上面运行:
[asset requestContentEditingInputWithOptions:options completionHandler:^(PHContentEditingInput *contentEditingInput, NSDictionary *info) { CIImage *fullImage = [CIImage imageWithContentsOfURL:contentEditingInput.fullSizeImageURL]; NSLog(@"%@",contentEditingInput.fullSizeImageURL);//get url NSLog(@"%@", fullImage.properties.description);//get {TIFF}, {Exif} }];
用一行代码获取文件名的简短方法。 资产具有用于访问文件名的属性。
NSString*FileName=[asset valueForKey:@"filename"]; NSLog(@"File name %@",FileName); Its done. Note: Accepted answer takes lots of time to load a phasset but it works.