Frage

UIImageWriteToSavedPhotosAlbum funktioniert nur manchmal. Manchmal funktioniert es, manchmal nicht, genau die gleiche Funktion.

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo {
NSLog(@"Saving image to camera roll...");
UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil);
NSLog(@"Done!"); }

Ich bin mit einem UIImagePicker Controller das Bild zu bekommen, dass dann diese Funktion aufruft.

Manchmal speichert sie es in der Filmrolle, andere Male ist es einfach nicht.

Wer hat eine Idee?

Vielen Dank im Voraus.

Edit:

Die Completion-Methode für UIImageWriteToSavedPhotosAlbum kehrt irgendwann einen Fehler von:

wait_fences: failed to receive reply: 10004003
War es hilfreich?

Lösung

würde ich durch das Hinzufügen einer Beendigung Zielmethode zum Speicher Aufruf starten, um zu sehen, ob es irgendwelche Fehler produziert. Siehe die UIImageWriteToSavedPhotosAlbum Dokumentation.

Edit:

  

Eine der Zeiten ist es wieder ...   wait_fences: failed Antwort erhalten:   10004003

Das bedeutet, dass die Operation abgelaufen. Es gibt viele Ursachen dafür:

  1. Low-Speicher. Ein Protokoll in didReceiveMemoryWarning setzen, um zu sehen, ob dies die Ursache ist
  2. Beschädigte Dateien, dass das System nicht retten kann. Wenn das Bild jedes Mal erzeugt wird, kann es nicht richtig jedes Mal kommen.
  3. nicht ordnungsgemäß gemeldet Platte voll Fehler.

Ich denke, (1) höchstwahrscheinlich und die intermittierende Natur erklärt. Wenn Sie genug Speicher haben die Methode funktioniert und wenn Sie dies nicht tun versagt es.

Darüber hinaus, wenn Sie kompilieren, lösen alle Warnungen, die kommen. Das sind nur Fehler, die erst zur Laufzeit nicht angezeigt wird. Sie sind Problem dort aufgeführt werden könnten

Andere Tipps

Hope diese Antwort ist nicht zu spät, hilfreich zu sein. Ich lief in genau das gleiche Problem. Wie es die Frage stellt sich heraus, ist zweifach. Zuerst wird das Bild muß beibehalten werden, bevor es zu UIImageWriteToSavedPhotosAlbum gesendet wird. Zweitens auf Pre-iPhone4 Geräte können diese Funktion eine loooooong Zeit nehmen, seine Sache zu tun. Das Update war ich fand eine Callback-Funktion zu implementieren. Lesen Sie die Dokumentation für UIImageWriteToSavedPhotosAlbum darüber. Die Funktion muss im richtigen Format sein, können Sie nicht nur alle alte Funktion verwenden. In dieser Funktion müssen Sie das Bild freizugeben Sie erhalten, oder Sie werden ein Speicherleck. Sie können dies auch halten verwenden Spur, wenn Speichern von Bildern fertig sind. Hier ist mein Grund Code unten:

    -(void)processImage:(UIImage *)image {
        [image retain];
        UIImageWriteToSavedPhotosAlbum(reconstructedImage, self, @selector(image:didFinishSavingWithError:contextInfo:), NULL);
}


    - (void)image:(UIImage *) image didFinishSavingWithError: (NSError *) error contextInfo: (void *) contextInfo {
        NSLog(@"SAVE IMAGE COMPLETE");
        if(error != nil) {
            NSLog(@"ERROR SAVING:%@",[error localizedDescription]);
        }
        [image autorelease];
    }
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top