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

从UIImagePickerController获取UIImage的URL

商开宇
2023-03-14
问题内容

我试图获取从Swift中的Library导入的图像的URL,以将其发送到Apple
Watch,transferFile(_:metadata)但出现两个错误NSURL

这是我的代码

func imagePickerController(picker: UIImagePickerController, didFinishPickingImage image: UIImage!, editingInfo: [NSObject : AnyObject]!)
{
    imagePicked.image = image    
    let imageUrl = editingInfo[UIImagePickerControllerReferenceURL] as! NSURL
    let imageName = imageUrl.path!.lastPathComponent
    let documentDirectory = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true).first as String!
    let localPath = documentDirectory.stringByAppendingPathComponent(imageName)
    let image = editingInfo[UIImagePickerControllerOriginalImage]as! UIImage
    let data = UIImagePNGRepresentation(image)

    data!.writeToFile(localPath, atomically: true)

    let photoURL = NSURL(fileURLWithPath: localPath)

    self.dismissViewControllerAnimated(true, completion: nil);
}

我在 imageName和 localPath上遇到错误,因为它说:


lastPathComponent”不可用:在NSURL上使用lastPathComponent。’stringByAppendingPathComponent’不可用:在NSURL上使用URLByAppendingPathComponent。

但是我在Swift 2.0和Xcode 7中无法正确解决。


问题答案:

苹果改变的东西在他们NSStringNSURL图书馆在其最新版本(iOS版9),但这些方法都可以从iOS版4.您可以检查有关苹果论坛帖子的更多细节。

要修复此错误,您需要更改代码,例如:

斯威夫特2:

func imagePickerController(picker: UIImagePickerController, didFinishPickingImage image: UIImage!, editingInfo: [NSObject : AnyObject]!)
{
    let imageUrl          = editingInfo[UIImagePickerControllerReferenceURL] as! NSURL
    let imageName         = imageUrl.lastPathComponent
    let documentDirectory = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true).first as String!
    let photoURL          = NSURL(fileURLWithPath: documentDirectory)
    let localPath         = photoURL.URLByAppendingPathComponent(imageName!)
    let image             = editingInfo[UIImagePickerControllerOriginalImage]as! UIImage
    let data              = UIImagePNGRepresentation(image)

    data!.writeToFile(localPath.absoluteString, atomically: true)

    self.dismissViewControllerAnimated(true, completion: nil);
}

斯威夫特3:

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any])
{
    let imageUrl          = info[UIImagePickerControllerReferenceURL] as! NSURL
    let imageName         = imageUrl.lastPathComponent
    let documentDirectory = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first!
    let photoURL          = NSURL(fileURLWithPath: documentDirectory)
    let localPath         = photoURL.appendingPathComponent(imageName!)
    let image             = info[UIImagePickerControllerOriginalImage]as! UIImage
    let data              = UIImagePNGRepresentation(image)

    do
    {
        try data?.write(to: localPath!, options: Data.WritingOptions.atomic)
    }
    catch
    {
        // Catch exception here and act accordingly
    }

    self.dismiss(animated: true, completion: nil);
}

参考:

  1. lastPathComponent
  2. URLByAppendingPathComponent:


 类似资料:
  • 问题内容: 我正在尝试为用户提供照片库中图像的选择。因此,我用于选择。但是在文件系统中获取其初始URL会带来一个问题(我需要)。 我的代码。 imageURL 有点神秘。它描述了资产URL,但没有描述文件系统中的一个。它看起来像:。 根据该逻辑 路径 是其中是所述图像的名称。 然后,我访问我的Documents文件夹并尝试在其中找到带有路径的文件: /Users/Eugene/Library/De

  • 问题内容: 我正在尝试在iOS 8中针对SWIFT中的Objective-C 实现答案 我打电话给 这将导致“致命错误:在展开可选值时意外发现nil” 问题答案: 试试这个代码:

  • 问题内容: 我想将预览层“流式传输”到我的服务器,但是,我只希望发送特定的帧。基本上,我想拍摄AVCaptureVideoPreviewLayer的快照,将其缩放到28 * 28,将其转换为强度数组,然后将其发送到我的python后端处理其余部分的套接字层。 这里的问题是AVCapturePhotoOutput的捕获功能异常缓慢。我不能重复调用该函数。更不用说它总是使相机的快门声哈哈。 另一个问题

  • 问题内容: 我最近试图将代码从这里转换为Swift。但是,无论图像如何,我都会保持白色。这是我的代码: 提前致谢。 问题答案: iOS 9中的CoreImage:使用CIAreaAverage过滤器并传递要平均的整个图像的范围。 另外,它既可以在GPU上运行,也可以作为高度优化的CPU CIKernel运行,因此速度更快。

  • 问题内容: 我有这个新的iOS 8 Swift项目,在它的一个视图控制器中,我必须设置图像。但是,我想在将图像发送到视图之前更改图像的对比度: 这是我的代码: 好吧,我只是获取图像,对其进行转换,然后将转换后的版本作为并将其设置回我的视图。 但是我只得到一个错误: 有人可以告诉我我在做什么错吗? 问题答案: 差不多了 迅捷2 Swift 3或更高版本

  • 问题内容: 我想从获取文件名。我不想使用ALAssetLibrary,因为它在iOS 9中已弃用。我使用了以下代码,但对于每个文件,它始终将图像名称返回为“ Asset.jpg”。 问题答案: 我建议您使用Framework来获取图像的名称,下面是获取所选图像名称的代码