簡體   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