Speichern von Bild und laden es in Swift (iOS)

Rette ich ein Bild mit der saveImage.

func saveImage (image: UIImage, path: String ) -> Bool{

    let pngImageData = UIImagePNGRepresentation(image)
    //let jpgImageData = UIImageJPEGRepresentation(image, 1.0)   //if you want to save as JPEG

    print("!!!saving image at:  \(path)")

    let result = pngImageData!.writeToFile(path, atomically: true)

    return result
}

Neue info:

Speichern der Datei funktioniert nicht richtig ("[-] FEHLER beim SPEICHERN der DATEI" gedruckt.)--

            //save your image here into Document Directory
        let res = saveImage(tempImage, path: fileInDocumentsDirectory("abc.png"))
        if(res == true){
            print ("[+] FILE SAVED")
        }else{
            print ("[-] ERROR SAVING FILE")
        }

Warum nicht das saveImage-Funktion speichern Sie das Bild? Zugriffsrechte?

Ältere info:

Debug-info sagt:

!!!saving image at:  file:///var/mobile/Applications/BDB992FB-E378-4719-B7B7-E9A364EEE54B/Documents/tempImage

Dann ich wieder an diesem Ort mit

fileInDocumentsDirectory("tempImage")

Das Ergebnis korrekt ist.

Dann bin ich das laden der Datei über diesen Weg

    let image = UIImage(contentsOfFile: path)

    if image == nil {

        print("missing image at: \(path)")
    }else{
        print("!!!IMAGE FOUND at: \(path)")
    }

Der Pfad korrekt ist, aber die Meldung "fehlende Bild an..". Ist die Datei irgendwie nicht zugänglich oder nicht gespeichert? Was kann der Grund sein für dieses Verhalten?

Teste ich diesen code auf dem iphone 4 mit ios 7 und iphone 5 mit ios 7 simulator.

Bearbeiten:
1. Die fileInDocumentsDirectory Funktion

func fileInDocumentsDirectory(filename: String) -> String {

    let documentsURL = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)[0]
    let fileURL = documentsURL.URLByAppendingPathComponent(filename).absoluteString
    return fileURL        
}
  • Überprüfen Sie das Bild im finder verfügbar ist oder nicht. und fügen Sie einige Erweiterungen für Bild -*.png oder *.jpeg.
  • dont save vollständigen Pfad der Bild einfach nur speichern Sie das Bild nur name und fügen Sie den Namen mit Echtzeit-Dokument-Verzeichnis-Pfad. das ist es, da Dokumente-Verzeichnis-Pfad nie wieder dasselbe mit jedem Lauf.
  • Ich habe gerade die Datei speichern und anschließend versuchen, Sie zu laden, wie es das loadImageFromPath(fileInDocumentsDirectory("abc".png"))
  • fineInDocumentDirectory ist die Echtzeit-Pfad oder laden Sie aus der Datenbank?
  • Ich habe den code dieser Funktion. Nur drei Zeilen.
  • einfach Folgen Sie einfach der : hackingwithswift.com/example-code/media/...
  • Leider nicht arbeiten können, in Swift 2.0, weil stringByAppendingPathComponent ist veraltet.
  • Seien Sie vorsichtig, wo Sie speichern Sie Bilder und andere Daten. Dokumente/ sollte verwendet werden, für die von Benutzern erstellten Daten. Schauen Sie in diese Anleitung: stackoverflow.com/questions/37331529/...
  • Danke. Wie es aussieht, ich will das Dokumente-Verzeichnis, denn ich bin das speichern von Benutzer-Profil-Bilder.

InformationsquelleAutor tesgoe | 2016-05-20
Schreibe einen Kommentar