我有两个视图控制器,在一个我从照片库中选择图像并将其分配给图像属性。有了这个选择器:
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)img editingInfo:(NSDictionary *)editInfo
但我想从第一个控制器中的选择器获取图像的地址/数据,推送下一个视图控制器,然后在那里打开带有该地址的图像。那么我会做以下事情:
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
当我打印照片的信息时,它看起来像这样:
?资产库://asset/asset.JPG ID = 52219875-C221-4F60-B9D4-984AAADB6E63&安培; EXT = JPG
问题是UIImage有方法initWithData
或imageWithData
但是这些方法接受NSData而不是NSDictionary。
如何使用数据从照片库中打开图像?
答案 0 :(得分:2)
此方法:
- (void)imagePickerController:(UIImagePickerController *)picker
didFinishPickingImage:(UIImage *)img
editingInfo:(NSDictionary *)editInfo
不应该使用,自ios3以来它已被弃用
此方法:
- (void)imagePickerController:(UIImagePickerController *)picker
didFinishPickingMediaWithInfo:(NSDictionary *)info
报告时,会返回字典。
图像指针是此词典中的对象之一。你这样得到它:
UIImage* image = [info objectForKey:UIImagePickerControllerOriginalImage];
答案 1 :(得分:1)
基本上该词典中有几个键,请听here:
NSString *const UIImagePickerControllerMediaType;
NSString *const UIImagePickerControllerOriginalImage;
NSString *const UIImagePickerControllerEditedImage;
NSString *const UIImagePickerControllerCropRect;
NSString *const UIImagePickerControllerMediaURL;
NSString *const UIImagePickerControllerReferenceURL;
NSString *const UIImagePickerControllerMediaMetadata;
你可能想要UIImagePickerControllerEditedImage
。所以这就是你要找的东西:
UIImage *theImage = [info valueForKey:UIImagePickerControllerEditedImage];
当然,您也可以使用字典中的其他键从图像中获取其他信息。
答案 2 :(得分:0)
字典提供图像的URL。 所以按
加载数据NSData *imageData = [NSData dataWithContentsOfURL:[info valueForKey: UIImagePickerControllerReferenceURL]];
并将此数据用于NSImage initWithData
方法。