Frage

Ich versuche zu laden UIImage Objekt von NSData, und der Beispielcode war zu NSImage, Ich denke, sie sollten gleich sein. Aber gerade jetzt laden ich das Bild, ich frage mich, was das Beste ist, um die Fehler zu beheben UIImage Wird geladen NSData Ausgabe.

War es hilfreich?

Lösung

Uiimage hat eine -initWithData: Methode. Aus den Dokumenten: "Die Daten im Datenparameter müssen so formatiert werden, dass sie mit dem Dateiformat eines der unterstützten Bildtypen des Systems übereinstimmen."

Andere Tipps

Ich habe es nicht versucht UIImageJPEGRepresentation() vorher, aber UIImagePNGRepresentation Funktioniert gut für mich und die Konvertierung zwischen NSData und UIImage ist tot einfach:

NSData *imageData = UIImagePNGRepresentation(image);
UIImage *image=[UIImage imageWithData:imageData];

Versuchen Sie dies, um ein Bild in NSDATA umzuwandeln:

UIImage *img = [UIImage imageNamed:@"image.png"];
NSData *data1 = UIImagePNGRepresentation(img);

thedata sollte a sein NSData Objekt, das die Daten bereits enthält. Sie müssen die Datei zum Laden/Herunterladen in die durchführen NSData Objekt bevor es verwendet wird. Sie können es untersuchen, indem Sie es verwenden NSLog auf thedata und prüfen Sie, ob es die gültigen Daten enthält.

Verwenden Sie zur sicheren Ausführung des Codes den IF-LET-Block mit Daten, da die Funktion uiimagepnGrePresentation den optionalen Wert zurückgibt.

if let img = UIImage(named: "Hello.png") {
    if let data:Data = UIImagePNGRepresentation(img) {
       // Handle operations with data here...         
    }
}

Notiz: Daten ist Swift 3 -Klasse. Verwenden Sie Daten anstelle von NSDATA mit Swift 3

Generische Bildoperationen (wie PNG & JPG beides):

if let img = UIImage(named: "Hello.png") {
        if let data:Data = UIImagePNGRepresentation(img) {
               handleOperationWithData(data: data)     
        } else if let data:Data = UIImageJPEGRepresentation(img, 1.0) {
               handleOperationWithData(data: data)     
        }
}

*******
func handleOperationWithData(data: Data) {
     // Handle operations with data here...
     if let image = UIImage(data: data) {
        // Use image...
     }
}

Durch Verwendung von Erweiterung:

extension UIImage {

    var pngRepresentationData: Data? {
        return UIImagePNGRepresentation(img)
    }

    var jpegRepresentationData: Data? {
        return UIImageJPEGRepresentation(self, 1.0)
    }
}

*******
if let img = UIImage(named: "Hello.png") {
      if let data = img.pngRepresentationData {
              handleOperationWithData(data: data)     
      } else if let data = jpegRepresentationData {
              handleOperationWithData(data: data)     
     }
}

*******
func handleOperationWithData(data: Data) {
     // Handle operations with data here...
     if let image = UIImage(data: data) {
        // Use image...
     }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top