我正在尝试从相机获取图像文件名。我看过很多很多关于使用 UIImagePickerControllerReferenceURL 或 UIImagePickerControllerMediaURL 检索文件名的帖子,但这只会让你得到一个类似于://asset/asset.JPG?id=D1D715A8-6956-49FF-AF07-CE60FE93AE32&ext=JPG 的文件名。我相信这是因为图像尚未保存,因此像 img0001.jpg 这样的名称不可用。
有谁知道如何获取文件名?我在起诉我需要在 UIImageWriteToSavedPhotosAlbum 之后执行此操作,但我似乎无法弄清楚。
我已经看到这个问题被问了很多次,但似乎没有人“真正”回答它,他们只是总是从选择器而不是相机中选择的图像中给出文件名。
谢谢你的帮助
** 更新:
-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
[self.popoverController dismissPopoverAnimated:true];
NSString *mediaType = [info objectForKey:UIImagePickerControllerMediaType];
[self dismissViewControllerAnimated:YES completion:nil];
if ([mediaType isEqualToString:(NSString *)kUTTypeImage])
{
UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];
imageView.image = image;
if (newMedia)
{
UIImageWriteToSavedPhotosAlbum(image,
self,
@selector(image:finishedSavingWithError:contextInfo:),
nil);
NSURL *refURL = [info valueForKey:UIImagePickerControllerMediaURL];
// define the block to call when we get the asset based on the url (below)
ALAssetsLibraryAssetForURLResultBlock resultblock = ^(ALAsset *imageAsset)
{
ALAssetRepresentation *imageRep = [imageAsset defaultRepresentation];
NSLog(@"[imageRep filename] : %@", [imageRep filename]);
};
// get the asset library and fetch the asset based on the ref url (pass in block above)
ALAssetsLibrary* assetslibrary = [[ALAssetsLibrary alloc] init];
[assetslibrary assetForURL:refURL resultBlock:resultblock failureBlock:nil];
}
}
}
我上面的代码,但是当 imageRep 文件名被记录时,它是空的。