2 Stimmen

UIImageWriteToSavedPhotosAlbum speichert nur 5 von 10 Bildern. Warum?

Ich habe das Problem, wie der Titel schon sagt. Gibt es irgendwelche Einschränkungen, wie z.B. "Nur 3 Bilder pro Sekunde exportieren", oder ähnliches?

        for (int frameStepper = 0; frameStepper < [Something frameCount]; frameStepper++)
        {
            //Get the filename.
            imagePath = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"frame_%i.jpg", frameStepper]];

            //Read image.
            UIImage *image = [[[UIImage alloc] initWithContentsOfFile:imagePath] autorelease];

            //Write image.
            UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil);
        }

Ich habe 5 von 10 Bildern nach diesem Code exportiert. Ich weiß nicht, warum. Bitte helfen Sie, vielen Dank.

3voto

Caroline Punkte 4834

Eine Variante davon hat mir geholfen: http://iphoneincubator.com/blog/tag/uiimagewritetosavedphotosalbum

{
    UIImageWriteToSavedPhotosAlbum(image, self, @selector(imageSavedToPhotosAlbum: didFinishSavingWithError: contextInfo:), nil);

}

- (void)imageSavedToPhotosAlbum:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo {
    if (error) {
        [self tryWriteAgain:image];
    }
}

-(void)tryWriteAgain:(UIImage *)image
{
    UIImageWriteToSavedPhotosAlbum(image, self, @selector(imageSavedToPhotosAlbum: didFinishSavingWithError: contextInfo:), nil);
}

2voto

Geri Borbás Punkte 14716

Wenn ich den Fehler der Fertigstellung protokolliere, heißt es:

Error Domain=ALAssetsLibraryErrorDomain Code=-3301 "Write busy" UserInfo=0x69e8e20 {NSLocalizedFailureReason=There was a problem writing this asset because the writing resources are busy., NSLocalizedRecoverySuggestion=Try to write again, NSLocalizedDescription=Write busy}

Das bedeutet, dass ich auf die Beendigung der laufenden Prozesse warten muss, indem ich den angegebenen Callback implementiere:

- (void)               image: (UIImage *) image
    didFinishSavingWithError: (NSError *) error
                 contextInfo: (void *) contextInfo

Hurra!

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X