繁体   English   中英

仅在用相机拍摄时如何保存照片?

[英]How to save photo only when taken with camera?

我有一个带有UIImagePickerControllerDelegate和UINavigationControllerDelegate的视图控制器来选择照片。

但是,当我选择照片后,它会自动将同一张照片保存在我的相册中。

我想我在代码中写了这个函数

UIImageWriteToSavedPhotosAlbum(photoImage!, nil, nil, nil)

因此,我检查源类型等于相机,然后保存照片并在相册中选择照片,而不是再次保存同一照片。
但这是行不通的。 发生了什么?
它还会自动保存同一张照片。
我不想保存同一张照片吗?

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

    let uuid = NSUUID().uuidString
    let imageName:String = uuid + ".jpg"
    let documentsPath = NSHomeDirectory().appending("/Documents/\(image)/")
    let imagePath = documentsPath.appending(imageName)
    let imageUrl = URL(fileURLWithPath: imagePath)
    print("imageUrl is here:\(imageUrl)")

    photoImage = info[UIImagePickerControllerOriginalImage] as? UIImage

    if (UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.camera)) {

        photoImage = info[UIImagePickerControllerOriginalImage] as? UIImage
        // this doesn't work!!!!  
        //UIImageWriteToSavedPhotosAlbum(photoImage!, nil, nil, nil)
    }

    //save image to local Documents
    let imageData:Data = UIImageJPEGRepresentation(photoImage!, 0.05)!
    do {
        try imageData.write(to: imageUrl,options: .atomic)
    } catch let error {
        print(error)
    }

    showLoading()

    hideLoading {

        //I have func upload image to server
        self.tableView.reloadData()
        self.dismiss(animated: true, completion: nil)
    }
}

func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {

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

您不是在检查图像选择器控制器的信号源类型,而是在检查相机是否一般可用。

更改此:

if (UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.camera)) {

至:

if picker.sourceType == .camera {

暂无
暂无

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

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