繁体   English   中英

使用相机模式拍摄图像时出错

[英]Error on image capture with camera mode

我正在使用带有cameragallery图像选择器,并使用以下代码从相机获取图像,但imageurl and image name为nil。我正在使用11.2.2操作系统版本在移动设备上进行测试。

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {

    let image = info[UIImagePickerControllerOriginalImage] as! UIImage
    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!)

    if !FileManager.default.fileExists(atPath: localPath!.path) {
        do {
            try UIImageJPEGRepresentation(image, 1.0)?.write(to: localPath!)
            print("file saved")
        }catch {
            print("error saving file")
        }
    }
    else {
        print("file already exists")
    }
}

像这样使用UIImagePickerControllerImageURL代替UIImagePickerControllerReferenceURL

let imageUrl = info[UIImagePickerControllerImageURL] as? NSURL

您将不会获得任何imageUrlimageName因为您正在使用相机模式,并且该图像仍未保存在图库中,因此不会为该相机单击的图片创建任何图像路径。 因此他们将为零。 在这种情况下,您只能获取UIImage对象info[UIImagePickerControllerOriginalImage]

如果您从相册中挑选图像,那么您将一事无成。 您可以通过info[UIImagePickerControllerImageURL]获取url,并且可以使用最后一个路径组件来获取名称。

将您的imagePickerController源更改为photo imagePickerController.sourceType = .photoLibrary ,然后您将获得这些URL。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM