Frage "Erstellen eines Bildformats mit unbekanntem Typ ist ein Fehler" mit UIImagePickerController


Bei der Auswahl eines Bildes aus der Bildauswahl in iOS 10 Swift 3 erhalte ich einen Fehler - 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)
}

Das Bild wird nicht ausgewählt und aktualisiert. Ich brauche Hilfe oder einen Vorschlag, um zu wissen, ob die Syntax oder etwas in Bezug auf diese Methode in iOS10 oder Swift 3 geändert wurde, oder gibt es eine andere Möglichkeit, dies zu tun.


76
2017-08-18 04:14


Ursprung


Antworten:


Der unten erwähnte Code hat das Problem für mich gelöst -

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



Denken Sie daran, Delegate zu sich selbst hinzuzufügen

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

11
2017-09-25 21:23



Unter dem Code hat das Problem gelöst:

Wenn der Benutzer Änderungen am ausgewählten Bild vornimmt, ziehen Sie nur dieses Bild, andernfalls ziehen Sie die ursprüngliche Bildquelle ohne Änderungen und schließlich den Bildauswahl-Kontroller.

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



Wenn Sie die Bearbeitung des Bildes erlauben imageController.allowsEditing = true dann müssen Sie zuerst das bearbeitete Bild erhalten:

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



Das akzeptierte Lösung durch Jeetendra Choudhary funktioniert. Obwohl in Xcode 8 mit Swift 3, habe ich festgestellt, dass es eine Warnung generiert: Instance method 'imagePickerController(_:didFinishPickingMediaWithInfo:)' nearly matches optional requirement 'imagePickerController(_:didFinishPickingMediaWithInfo:)' of protocol 'UIImagePickerControllerDelegate'

enter image description here

und schlägt vor, entweder zu ergänzen @nonobjc oder Privatgelände Schlüsselwort zum Stummschalten der Warnung. Wenn Sie die Warnung mithilfe dieser Vorschläge stummschalten, funktioniert die Lösung jedoch nicht mehr.


5
2017-10-12 08:24



Ich habe festgestellt, dass die Standardbilder in der Fotobibliothek dieses Problem verursachen können. Wenn Sie ein Bild von Ihrem Computer auf den Simulator ziehen und es auswählen. Dieses Problem ist gelöst


5
2017-10-27 08:08



Nach Abdurohmans Antwort ändere ich meinen Code und löse das Problem, danke.

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