【问题标题】:How to Save the actual image path from UIImagePickerController (ipad)如何从 UIImagePickerController (ipad) 保存实际的图像路径
【发布时间】:2011-12-14 07:46:32
【问题描述】:

我有一个 ImagePickerController 来选择一个图像,该图像将用作绘图软件中的背景图像。

我需要选择图像的真实路径才能保存它,这样我就可以在应用关闭/打开时重新加载它。

我已尝试保存 UIImagePicker 委托提供的 NSURL,但它不起作用。

我在委托中得到这样的网址:

NSURL *imageURL = [info valueForKey:UIImagePickerControllerReferenceURL];

我使用 NSCoding 保存/重新加载 url,然后尝试获取这样的图像:

UIImage *image = [UIImage imageWithData:[NSData dataWithContentsOfURL:imageURL]];

我只需要路径即可重新加载图像...有人对此有见解吗?

编辑:

我开始怀疑这样做的正确方法可能不是对 uiimage 本身进行编码!?

【问题讨论】:

  • 我已经通过对 UIImage 数据本身进行编码来解决这个问题。我认为这样更好,因为如果由于某种原因在应用程序未运行时用户删除了图像....启动时编码方法不会找到它。现在它被编码和解码,所以数据总是可用的。我认为这是 ipad dev 的一部分。最佳实践...但我没有找到关于它的正确链接!

标签: cocoa-touch ipad uikit uiimagepickercontroller nsurl


【解决方案1】:

尝试用+dataWithContentsOfFile: 代替+dataWithContentsOfURL:。我有更好的运气。

【讨论】:

  • 这不是运气的问题。 dataWithContentsOfFile: 采用路径名; dataWithContentsOfURL: 接受一个 URL。如果您有路径,则使用前者;如果您有 URL,则使用后者。对你所拥有的东西使用正确的方法总是有效的(假设文件存在/可访问),使用错误的方法总是会失败。
【解决方案2】:

您可以尝试creating bookmark data 并对其进行编码、解码和restoring from bookmark data,而不是 URL 本身。 (我应该期望 URL 对象在编码和解码时自己处理这个问题,所以如果这能解决问题,我建议filing a bug。)

另外,如果你得到the URL's path,你可以将它传递给the imageOfContentsOfFile: method,这可能比将文件的全部内容吸入内存更有效地加载图像(至少对于某些图像文件类型) .

【讨论】:

  • 问题是我认为 UIImagePickerController 提供的 URL 不是路径的“真实” url...之后您无法使用该 url 加载它...
  • @oberthelot:记录输出的 URL 以及输入的 URL 和图像,看看你得到了什么。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-09-05
  • 2020-09-06
  • 1970-01-01
  • 2011-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多