在 swift 4 中从相机获取图像路径
Get image path after took it from camera in swift 4
我在 ios 中有一个显示默认相机屏幕的按钮,当我拍照时,它会保存在 phone 中,之后我想获得
UIImagePickerControllerReferenceURL
因为我想将照片发送到我的服务器,当我尝试获取 UIImagePickerControllerReferenceURL 时,应用程序崩溃并收到 nil 值的错误
这是我的代码:
@objc func take_photo(){
if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.camera){
let camera_picker = UIImagePickerController()
camera_picker.delegate = self
camera_picker.sourceType = .camera
camera_picker.allowsEditing = false
self.present(camera_picker, animated: true, completion: nil)
}
}
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
if let img_original = info["UIImagePickerControllerOriginalImage"] as? UIImage{
pickerImg_seleccionada = img_original
}
UIImageWriteToSavedPhotosAlbum(pickerImg_seleccionada!, self, #selector(image(_:didFinishSavingWithError:contextInfo:)), nil)
if let img_seleccionada = pickerImg_seleccionada {
img.display(image: img_seleccionada)
img.contentMode = .scaleAspectFit
let imgData: NSData = NSData(data: UIImageJPEGRepresentation((pickerImg_seleccionada)!, 0.9)!)
let imageSize: Int = imgData.length
img_size = Double(imageSize) / (1024.0 * 1024.0)
rep_imagen = UIImageJPEGRepresentation((pickerImg_seleccionada)!, 0.9)
let url_imagen = info["UIImagePickerControllerReferenceURL"] as! URL //here is the error
image_name = url_imagen.lastPathComponent
}
dismiss(animated: true, completion: nil)
}
@objc func image(_ image: UIImage, didFinishSavingWithError error: Error?, contextInfo: UnsafeRawPointer) {
if let error = error {
// we got back an error!
print("no guardada")
} else {
print("guardada")
}
}
我该如何解决?,我认为这个过程很好,因为图像已存储并且我可以获得 img_size 和 rep_imagen 但不是 url_imagen
提前致谢
当用户使用图像选择器控制器拍摄照片时,信息字典中没有 UIImagePickerControllerReferenceURL 键。没有任何内容保存到磁盘。捕获的图像是您已有的 UIImagePickerControllerOriginalImage。仅此而已。
我在 ios 中有一个显示默认相机屏幕的按钮,当我拍照时,它会保存在 phone 中,之后我想获得
UIImagePickerControllerReferenceURL
因为我想将照片发送到我的服务器,当我尝试获取 UIImagePickerControllerReferenceURL 时,应用程序崩溃并收到 nil 值的错误
这是我的代码:
@objc func take_photo(){
if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.camera){
let camera_picker = UIImagePickerController()
camera_picker.delegate = self
camera_picker.sourceType = .camera
camera_picker.allowsEditing = false
self.present(camera_picker, animated: true, completion: nil)
}
}
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
if let img_original = info["UIImagePickerControllerOriginalImage"] as? UIImage{
pickerImg_seleccionada = img_original
}
UIImageWriteToSavedPhotosAlbum(pickerImg_seleccionada!, self, #selector(image(_:didFinishSavingWithError:contextInfo:)), nil)
if let img_seleccionada = pickerImg_seleccionada {
img.display(image: img_seleccionada)
img.contentMode = .scaleAspectFit
let imgData: NSData = NSData(data: UIImageJPEGRepresentation((pickerImg_seleccionada)!, 0.9)!)
let imageSize: Int = imgData.length
img_size = Double(imageSize) / (1024.0 * 1024.0)
rep_imagen = UIImageJPEGRepresentation((pickerImg_seleccionada)!, 0.9)
let url_imagen = info["UIImagePickerControllerReferenceURL"] as! URL //here is the error
image_name = url_imagen.lastPathComponent
}
dismiss(animated: true, completion: nil)
}
@objc func image(_ image: UIImage, didFinishSavingWithError error: Error?, contextInfo: UnsafeRawPointer) {
if let error = error {
// we got back an error!
print("no guardada")
} else {
print("guardada")
}
}
我该如何解决?,我认为这个过程很好,因为图像已存储并且我可以获得 img_size 和 rep_imagen 但不是 url_imagen
提前致谢
当用户使用图像选择器控制器拍摄照片时,信息字典中没有 UIImagePickerControllerReferenceURL 键。没有任何内容保存到磁盘。捕获的图像是您已有的 UIImagePickerControllerOriginalImage。仅此而已。