【问题标题】:In the UIImagePickerController, is it possible to get the NSURL value for UIImagePickerControllerMediaURL?在 UIImagePickerController 中,是否可以获取 UIImagePickerControllerMediaURL 的 NSURL 值?
【发布时间】:2011-01-17 20:07:31
【问题描述】:

当用户从选取器控制器中选择图像时,我正在调用委托:

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

在字典信息中,键UIImagePickerControllerMediaURL 的值为NULL。我在这里遗漏了什么吗?

【问题讨论】:

    标签: iphone


    【解决方案1】:

    我知道这个问题已经过时了,但我确实设法从最近的谷歌搜索中找到了它,所以我想我会提出我认为实际上是其他答案似乎错过的问题的答案。

    UIImagePickerControllerMediaURL 为 NULL,因为它仅在选择器中为电影 (kUTTypeMovie) 媒体类型返回。如果您在创建默认选择器后没有指定其他媒体类型,那么文档似乎暗示您不会得到它:

    UIImagePickerControllerMediaURL - Specifies the filesystem URL for the movie.

    而且我可以确认,至少在我在 iOS 6 中对图像(不是电影)进行的快速测试中,它没有返回。

    要访问返回的图像,您实际上可以直接访问 UIImagePickerControllerOriginalImage 键下的 UIImage 对象(如果不允许编辑,则默认设置)或 UIImagePickerControllerEditedImage 如果允许在选取器中进行编辑。即使在选择器中进行了编辑,原始图像也始终可用。您可以像对待程序中的任何其他 UIImage 一样对待这些 UIImage。

    【讨论】:

      【解决方案2】:

      以下链接帮助了我。 display image from URL retrieved from ALAsset in iPhone

      UIImagePickerControllerReferenceURL 返回一个资产库 URL。您需要使用 ALAssetLibrary 对象来访问图像。该链接描述了如何执行此操作。

      【讨论】:

        【解决方案3】:

        你可以得到一个对象的 NSURL 路径,但这并不是你所期望的。而且我似乎也无法访问文件中的数据。

        - (void)imagePickerController:(UIImagePickerController *)imagepicker didFinishPickingMediaWithInfo:(NSDictionary *)info {
             // dismiss the image picker modal
             [[imagepicker parentViewController] dismissModalViewControllerAnimated:YES];
             // grab the image url
             NSURL *imageURL = [info valueForKey: UIImagePickerControllerReferenceURL];
             // get the data from the url
             NSData *data = [NSData dataWithContentsOfURL:imageURL];
             // data is null at this point
         }
        

        对于 jpeg 文件,NSURL 类似于以下内容。

        assets-library://asset/asset.JPG?id=1000000246&ext=JPG

        【讨论】:

          【解决方案4】:

          在 iPad 上运行 iOS 3.2.1,我的应用似乎能够通过 UIImagePickerControllerMediaURL 获取图像文件的文件 URL,尽管文档似乎说它仅适用于电影文件。

          【讨论】:

            【解决方案5】:

            是的,回调中没有填充元数据(有些人还期待照片拍摄地点的地理标签/位置,但事实并非如此)。 从 Apple 的角度来看,您没有获得 NSURL 的事实听起来很合乎逻辑:它们不会为您提供真实文件的路径(例如 file:// ....),因为这被视为实现的一部分,而不是公共 API 的一部分:从客户端的角度来看,如果苹果不想让您知道图片在文件系统上的物理存储位置。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2012-04-08
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2016-10-28
              • 2014-12-03
              • 1970-01-01
              相关资源
              最近更新 更多