当前位置: 首页 > 面试题库 >

从UIImagePickerController获取选择的UIImage的URL

易祖鹤
2023-03-14
问题内容

我正在尝试为用户提供照片库中图像的选择。因此,我UIImagePickerController用于选择。但是在文件系统中获取其初始URL会带来一个问题(我需要CKAsset)。

我的代码

func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [NSObject : AnyObject]) {
    let imageURL = info[UIImagePickerControllerReferenceURL] as NSURL
    let path = imageURL.path!
    let imageName = path.lastPathComponent
    let paths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)
    let documentDirectory = paths.first as String!
    let localPath = documentDirectory + "/" + imageName

    let imageData = NSData(contentsOfFile: localPath)!
    let image = UIImage(data: imageData)!

    picker.dismissViewControllerAnimated(true, completion: nil)

}

imageURL 有点神秘。它描述了资产URL,但没有描述文件系统中的一个。它看起来像:assets- library://asset/asset.JPG?id=B6C0A21C-07C3-493D-8B44-3BA4C9981C25&ext=JPG

根据该逻辑 路径/asset.JPG其中asset.JPG是所述图像的名称。

然后,我访问我的Documents文件夹并尝试在其中找到带有路径的文件:

/Users/Eugene/Library/Developer/CoreSimulator/Devices/3C5E9A23-8220-4B37-BD14-F1E42EEC2C7C/data/Containers/Data/Application/20EBAAE2-6C6F-4651-A48F-16A222CCB3A2/Documents/asset.JPG

也是隐秘的,但对于不存在的图像似乎是一条真实的路径……找不到具有该路径的图像。这让我恶心。

我是否必须从头开始保存图像?还是还有其他路要走?

我已经浏览了一些使用 AssetsLibrary API的教程,但是没有发现有用的解决方案。先感谢您!


问题答案:

好的,我已经解决了问题。

您所要做的只是简单地抓取图像(info[UIImagePickerControllerOriginalImage] as UIImage)并保存到给定目录。如果您只需要保存1张图片,那么效果很好。下面的代码ID。

func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [NSObject : AnyObject]) {
    let imageURL = info[UIImagePickerControllerReferenceURL] as NSURL
    let imageName = imageURL.path!.lastPathComponent
    let documentDirectory = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true).first as String
    let localPath = documentDirectory.stringByAppendingPathComponent(imageName)

    let image = info[UIImagePickerControllerOriginalImage] as UIImage
    let data = UIImagePNGRepresentation(image)
    data.writeToFile(localPath, atomically: true)

    let imageData = NSData(contentsOfFile: localPath)!
    let photoURL = NSURL(fileURLWithPath: localPath)
    let imageWithData = UIImage(data: imageData)!

    picker.dismissViewControllerAnimated(true, completion: nil)

}


 类似资料:
  • 问题内容: 我试图获取从Swift中的Library导入的图像的URL,以将其发送到Apple Watch,但出现两个错误。 这是我的代码: 我在 imageName和 localPath上遇到错误,因为它说: “ lastPathComponent”不可用:在NSURL上使用lastPathComponent。’stringByAppendingPathComponent’不可用:在NSURL上

  • 问题内容: 如何在ng-grid中创建(或访问)选定行的数组? 文档(滚动到“网格选项”) index.html main.js Plnkr代码(并运行它) 问题答案: 根据文档,应该是的属性,因此请尝试以下操作: 控制者 的HTML

  • 我在Netbeans构建了一个Java项目。我有一个表单,表单内部有一个jList,其中填充了一个对象(Favorite)。我也有一个按钮,我想当我按下按钮删除选定的项目在jList。 我正在尝试以下代码,但我得到一个错误。 我得到以下错误: 线程“AWT-EventQueue-0”中出现异常Java . lang . classcastexception:Java . lang . string

  • 您能告诉我如何将转换为吗?

  • http://codepen.io/anon/pen/wjzqww?editors=1010

  • 我有一个超文本标记语言选择框,在我的jsp中启用了多选择。我从其他按钮动态填充选项。因此,用户不会从该选择框中选择任何值。我必须将selectbox的所有值传递给其他jsp。 我正在使用表单操作提交浏览jsp。这样做时,我无法获得所有的选择框值。 此选项仅提供该多选框中的选定值。我想要的是从selectbox中获取所有值,无论是否选中。 谢谢