Question

UIImageWriteToSavedPhotosAlbum ne travaille parfois. Parfois cela fonctionne, parfois non, exactement la même fonction.

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

J'utilise un contrôleur UIImagePicker pour obtenir l'image qui appelle alors cette fonction.

Parfois, il enregistre sur le rouleau de la caméra, d'autres fois il ne fonctionne tout simplement pas.

Quelqu'un a une idée?

Merci à l'avance.

Edit:

La méthode de l'avancement pour UIImageWriteToSavedPhotosAlbum renvoie parfois une erreur de:

wait_fences: failed to receive reply: 10004003
Était-ce utile?

La solution

Je commence par l'ajout d'une méthode cible d'achèvement à l'appel pour voir, sauf si elle produit des erreurs. Consultez la documentation de UIImageWriteToSavedPhotosAlbum pour plus de détails.

Edit:

  

L'une des fois il est revenu ...   wait_fences: pas reçu la réponse:   10004003

Cela signifie que l'opération a expiré. Il existe de nombreuses causes de ceci:

  1. Mémoire faible:. A mis un journal en didReceiveMemoryWarning pour voir si cela est la cause
  2. Les fichiers corrompus que le système ne peut pas sauver. Si l'image est générée chaque fois qu'il pourrait ne pas sortir juste à chaque fois.
  3. rapporté disque plein Improperly erreur.

Je pense que (1) le plus probable et explique la nature intermittente. Lorsque vous avez assez de mémoire la méthode fonctionne et quand vous le faites pas échoue.

En outre, lorsque vous compilez, résoudre tous les avertissements qui se présentent. Ce ne sont que des erreurs qui ne seront pas visibles avant l'exécution. Vous êtes problème pourrait être listée

Autres conseils

Hope cette réponse est pas trop tard pour être utile. Je suis tombé sur exactement le même problème. Il se trouve que la question est double. Tout d'abord, l'image n'a pas besoin d'être conservé avant qu'il ne soit envoyé à UIImageWriteToSavedPhotosAlbum. En second lieu, sur les appareils pré-iPhone4 cette fonction peut prendre un certain temps loooooong à faire sa chose. La solution que j'ai trouvé d'implémenter une fonction de rappel. Consultez la documentation de UIImageWriteToSavedPhotosAlbum à ce sujet. La fonction doit être dans le bon format, vous ne pouvez pas utiliser une ancienne fonction. Dans cette fonction, assurez-vous de libérer l'image que vous ou vous RÉPARTIS fuite de mémoire. Vous pouvez également l'utiliser pour garder une trace des lorsque les images sont fait enregistrer. Voici mon code de base ci-dessous:

    -(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];
    }
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top