使用数据从照片库中打开UIImage

时间:2013-02-01 01:47:21

标签: ios nsdictionary photo nsdata

我有两个视图控制器,在一个我从照片库中选择图像并将其分配给图像属性。有了这个选择器:

- (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有方法initWithDataimageWithData但是这些方法接受NSData而不是NSDictionary。

如何使用数据从照片库中打开图像?

3 个答案:

答案 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)

此方法的Apple's documentation

基本上该词典中有几个键,请听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方法。