Pregunta "Crear un formato de imagen con un tipo desconocido es un error" con UIImagePickerController


Al elegir una imagen del selector de imágenes en iOS 10 Swift 3, aparece un error: Creating an image format with an unknown type is an error

 func imagePickerController(picker: UIImagePickerController, didFinishPickingImage image: UIImage, editingInfo: [String : AnyObject]?) {

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

La imagen no se está seleccionando y actualizando. Necesito ayuda o sugerencia para saber si la sintaxis o algo relacionado con este método se ha modificado en iOS10 o Swift 3 o existe alguna otra forma de hacerlo.


76
2017-08-18 04:14


origen


Respuestas:


El código mencionado a continuación me solucionó el problema:

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) {
    if let image = info[UIImagePickerControllerOriginalImage] as? UIImage {
        imagePost.image = image
    } else{
        print("Something went wrong")
    }

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

28
2017-08-18 08:34



Recuerde agregar delegado a sí mismo

let picker = UIImagePickerController()
picker.delegate = self // delegate added

11
2017-09-25 21:23



El siguiente código resolvió el problema:

Si el usuario realiza cambios en la imagen seleccionada, extraiga solo esa imagen, de lo contrario, extraiga la fuente de la imagen original sin realizar ningún cambio y, finalmente, desestime el controlador de visualización del selector de imágenes.

public func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]){
    if let image = info[UIImagePickerControllerEditedImage] as? UIImage {
        imageView.image = image
    }
    else if let image = info[UIImagePickerControllerOriginalImage] as? UIImage {
        imageView.image = image
    } else{
        print("Something went wrong")
    }

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

9
2017-12-15 14:13



Si permite la edición de la imagen imageController.allowsEditing = true entonces necesitarás obtener primero la imagen editada:

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) {
    picker.dismissViewControllerAnimated(true, completion: nil)

    if let image = info[UIImagePickerControllerEditedImage] as? UIImage {
        imagePost.image = image
    } else if let image = info[UIImagePickerControllerOriginalImage] as? UIImage {
        imagePost.image = image
    } else {
        imagePost.image = nil
    }
}

7
2017-09-25 06:10



los solución aceptada por Jeetendra Choudhary funciona. Aunque en Xcode 8 con Swift 3, noté que genera una advertencia: Instance method 'imagePickerController(_:didFinishPickingMediaWithInfo:)' nearly matches optional requirement 'imagePickerController(_:didFinishPickingMediaWithInfo:)' of protocol 'UIImagePickerControllerDelegate'

enter image description here

y sugiere agregar cualquiera @nonobjc o privado palabra clave para silenciar la advertencia. Si silencia la advertencia con estas sugerencias, la solución ya no funcionará.


5
2017-10-12 08:24



Encontré que las imágenes predeterminadas en la biblioteca de fotos podrían resolver este problema. Si arrastras una imagen de tu computor al simulador y la eliges. este problema esta resuelto


5
2017-10-27 08:08



Según la respuesta de Abdurohman, cambio mi código y resuelvo el problema, gracias.

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
    let selectedImage = info[UIImagePickerControllerOriginalImage] as! UIImage

    photoImageView.image = selectedImage

    // Dismiss the picker.
    dismiss(animated: true, completion: nil)
}

3
2017-09-29 07:57



Agregar esto a viewDidload ()

imagepicker.delegate = self

2
2018-05-22 17:20



Agregue "_" en los parámetros de la función.

de

func imagePickerController(picker: UIImagePickerController ...

a

func imagePickerController(_ picker: UIImagePickerController ...

1
2017-09-21 07:24