【问题标题】:Open UIImage from photo library with data从带有数据的照片库中打开 UIImage
【发布时间】:2013-02-01 01:47:21
【问题描述】:

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

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)img editingInfo:(NSDictionary *)editInfo

但是我想从第一个控制器中的选择器中获取图像的地址/数据,推送下一个视图控制器,然后在那里打开具有该地址的图像。那么我执行以下操作:

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info

当我打印照片的信息时,它看起来像这样:

assets-library://asset/asset.JPG?id=52219875-C221-4F60-B9D4-984AAADB6E63&ext=JPG

问题是 UIImage 有方法 initWithDataimageWithData 但这些接受 NSData 而不是 NSDictionary。

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

【问题讨论】:

    标签: ios nsdictionary photo nsdata


    【解决方案1】:

    这个方法:

    - (void)imagePickerController:(UIImagePickerController *)picker 
            didFinishPickingImage:(UIImage *)img 
                      editingInfo:(NSDictionary *)editInfo
    

    不应使用,自 ios3 起已弃用

    这个方法:

      - (void)imagePickerController:(UIImagePickerController *)picker 
      didFinishPickingMediaWithInfo:(NSDictionary *)info
    

    在您报告时返回字典。

    图像指针是此字典中的对象之一。您可以这样获得它:

      UIImage* image = [info objectForKey:UIImagePickerControllerOriginalImage];
    

    【讨论】:

    • 他不想要图片,他要了 URL,应该在不同的视图控制器中使用。
    【解决方案2】:

    这是该方法的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];
    

    当然,您也可以使用字典中的其他键从图像中获取其他信息。

    【讨论】:

    • 不是,他在找什么。他想传递地址,而不是图像。
    【解决方案3】:

    字典提供图像的 URL。 所以通过

    加载数据
    NSData *imageData = [NSData dataWithContentsOfURL:[info valueForKey: UIImagePickerControllerReferenceURL]];
    

    并将此数据用于NSImage initWithData 方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-09
      • 1970-01-01
      相关资源
      最近更新 更多