从带有数据的照片库中打开 UIImage

Posted

技术标签:

【中文标题】从带有数据的照片库中打开 UIImage【英文标题】:Open UIImage from photo library with data 【发布时间】: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。

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

【问题讨论】:

【参考方案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 方法。

【讨论】:

以上是关于从带有数据的照片库中打开 UIImage的主要内容,如果未能解决你的问题,请参考以下文章

从照片 SwiftUI 中获取图像时内存不足

从数据库中获取照片并在列表视图中显示

Cordova 3.6:如何从 Android 的照片库中提取 GPS Exif 数据?

使用 ajax 和 mvc 提交带有照片数据的表单

从 WKWebView 打开照片库或相机?

从 Instagram 获取所有带有 PHP 特定标签的照片 [关闭]