Domanda

UIImageWriteToSavedPhotosAlbum sta solo lavorando a volte. A volte funziona, a volte non è così, esattamente la stessa funzione.

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

Sto usando un controller UIImagePicker per ottenere l'immagine che poi chiama quella funzione.

A volte lo salva al rullino fotografico, altre volte semplicemente non.

Qualcuno ha qualche idea?

Grazie in anticipo.

Modifica:

Il metodo di completamento per UIImageWriteToSavedPhotosAlbum ritorna qualche tempo un errore di:

wait_fences: failed to receive reply: 10004003
È stato utile?

Soluzione

Vorrei iniziare con l'aggiunta di un metodo obiettivo di completamento per il salvataggio chiamata per vedere se sta producendo gli eventuali errori. Vedere la documentazione UIImageWriteToSavedPhotosAlbum per i dettagli.

Modifica:

  

Una delle volte restituito ...   wait_fences: non è riuscito a ricevere risposta:   10004003

Ciò significa che l'operazione è scaduta. Ci sono molte cause di questo:

  1. Bassa memoria:. Mettere un log in didReceiveMemoryWarning per vedere se questa è la causa
  2. file corrotti che il sistema non può salvare. Se l'immagine viene generato ogni volta che potrebbe non venire fuori a destra ogni volta.
  3. disco non correttamente segnalati errore completo.

Credo che (1) più probabile e spiega la natura intermittente. Quando si dispone di memoria sufficiente il metodo funziona e quando non viene a mancare.

Inoltre, quando si compila, risolvere eventuali avvisi che vengono in su. Questi sono solo gli errori che non mostreranno fino a runtime. Non Sei problema potrebbe essere elencato lì

Altri suggerimenti

Spero che questo risposta non è troppo tardi per essere utile. Ho incontrato esattamente lo stesso problema. Come si scopre il problema è duplice. In primo luogo, l'immagine ha bisogno di essere conservati prima di essere inviato a UIImageWriteToSavedPhotosAlbum. In secondo luogo, sui dispositivi pre-iPhone4 questa funzione può richiedere un tempo loooooong a fare la sua cosa. La correzione che ho trovato è stato quello di implementare una funzione di callback. Vedere la documentazione per UIImageWriteToSavedPhotosAlbum su questo. La funzione deve essere nel formato corretto, non si può semplicemente utilizzare qualsiasi antica funzione. In questa funzione assicurarsi di rilasciare l'immagine che si ha mantenuto, altrimenti si perderà la memoria. È inoltre possibile utilizzare questo per tenere traccia di quando le immagini sono fatte risparmio. Qui è il mio codice di base di seguito:

    -(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];
    }
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top