Xcode / ios:在让用户选择并显示图像之后,如何获得图像名称?

时间:2015-04-12 02:09:20

标签: ios objective-c xcode uiimagepickercontroller

我有代码工作,让用户选择一个现有的图像,让它在屏幕上的UIView中很好地显示。

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
    UIImage *chosenImage = info[UIImagePickerControllerEditedImage];
    self.imageView.image = chosenImage;
    NSLog(@"image is%@",chosenImage);
    [picker dismissViewControllerAnimated:YES completion:NULL];
}

如何获取文件名以保留以供将来参考? chosenImage只显示了一堆关于该文件的元数据。

谢谢。

2 个答案:

答案 0 :(得分:3)

如下所示,您无法使用当前现有的API从UIImagePickerControllerDelegate获取所选图像的名称。

以下是UIImagePickerControllerDelegate的可用Editing Information Keys

NSString *const UIImagePickerControllerMediaType;
NSString *const UIImagePickerControllerOriginalImage;
NSString *const UIImagePickerControllerEditedImage;
NSString *const UIImagePickerControllerCropRect;
NSString *const UIImagePickerControllerMediaURL;
NSString *const UIImagePickerControllerReferenceURL;
NSString *const UIImagePickerControllerMediaMetadata;

但是,您可能希望使用AssetsLibrary.framework来获取由照片应用程序管理的图片的名称:

@import AssetsLibrary;

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
    ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
    [library assetForURL:info[UIImagePickerControllerReferenceURL] 
             resultBlock:^(ALAsset *fileAsset) {

      NSLog(@"%@", [[fileAsset defaultRepresentation] filename]);

   } failureBlock:nil];
}

答案 1 :(得分:0)

在该方法的开头尝试NSLog(@"%@",info)并查看该名称是否在字典中。