[英]Error on image capture with camera mode
我正在使用帶有camera
和gallery
圖像選擇器,並使用以下代碼從相機獲取圖像,但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
您將不會獲得任何imageUrl
或imageName
因為您正在使用相機模式,並且該圖像仍未保存在圖庫中,因此不會為該相機單擊的圖片創建任何圖像路徑。 因此他們將為零。 在這種情況下,您只能獲取UIImage
對象info[UIImagePickerControllerOriginalImage]
。
如果您從相冊中挑選圖像,那么您將一事無成。 您可以通過info[UIImagePickerControllerImageURL]
獲取url,並且可以使用最后一個路徑組件來獲取名稱。
將您的imagePickerController源更改為photo imagePickerController.sourceType = .photoLibrary
,然后您將獲得這些URL。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.