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