2012-10-02 15 views
9

Estoy intentando guardar un UIImage en el álbum de fotos. He intentado métodos severl el último es:Guardar UIImage al álbum de fotos con writeImageToSavedPhotosAlbum

-(IBAction)captureLocalImage:(id)sender{ 

[photoCaptureButton setEnabled:NO]; 

// Save to assets library 
ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init]; 

[library writeImageToSavedPhotosAlbum: imageView.image.CGImage metadata:nil completionBlock:^(NSURL *assetURL, NSError *error2) 
{ 
    //    report_memory(@"After writing to library"); 
    if (error2) { 
     NSLog(@"ERROR: the image failed to be written"); 
    } 
    else { 
     NSLog(@"PHOTO SAVED - assetURL: %@", assetURL); 
    } 

    runOnMainQueueWithoutDeadlocking(^{ 
     //     report_memory(@"Operation completed"); 
     [photoCaptureButton setEnabled:YES]; 
    }); 
}]; 

} 

imageView es un UIImageView que contienen la imagen que desea guardar. En el registro obtuve "PHOTO SAVED - assetURL: (null)" y la foto no se guarda en la biblioteca.

¿Qué estoy haciendo mal?

+0

Estoy teniendo el mismo problema. Todavía no he resuelto la solución. – drhr

+0

Eche un vistazo a mi respuesta a continuación. Resolví el mío, tal vez eso también te ayudaría. – Idan

Respuesta

2

Control hacia fuera este sample .. que explica cómo guardar las fotos usando la biblioteca de activos ..

incluso se puede utilizar ..

UIImageWriteToSavedPhotosAlbum(UIImage *image, id completionTarget, SEL completionSelector, void *contextInfo); 

cehck a cabo su enlace How to save picture to iPhone photo library?

+0

He intentado ésas y resultado igual. ¿Es posible que sea porque estoy tomando fotos de la biblioteca local antes y no las cierro bien o algo por el estilo? Puedo ver la foto que estoy recibiendo pero no puedo guardarla. Estoy desesperado ... – Idan

+1

si proporciona algún código de muestra, con un problema similar, puedo ayudarlo ... – vishy

+1

Ya lo he resuelto, el problema no estaba con este fragmento de código. He publicado el problema exacto anterior. Gracias. – Idan

8

sólo tiene que utilizar este línea de abajo para guardar la imagen en su biblioteca de fotos

UIImageWriteToSavedPhotosAlbum(imageView.image,nil,nil,nil); 

:)

+1

Creo que el OP específicamente pregunta cómo guardar en un álbum en particular, no solo de forma genérica cómo guardar la imagen. (Me doy cuenta de que llego tarde al juego aquí, pero me parece que es una distinción importante) –

+0

Irán dijo que tenía problemas para guardar una imagen en el álbum de fotos. Esto hace que suene como si quisiera guardar en un álbum específico. 1. Idan no aceptó tu respuesta. Él aceptó su propia respuesta. Desplázate hacia abajo y mira. 2. No estás equivocado, pero no estás respondiendo toda la pregunta. En mi opinión, @vishy a continuación hace un trabajo mucho mejor al responder específicamente la pregunta explícita de cómo guardar, no a la rotación de la cámara, sino a un álbum específico. –

+0

Paras, obviamente estamos en desacuerdo, y cualquier otra comunicación debería ser a través de chat privado.Básicamente, desde mi punto de vista, @vishy ya había respondido la pregunta cuando escribiste tu respuesta. Tu respuesta tiene menos información que la de vishy, ​​y la escribiste después de vishy, ​​por lo que me parece innecesaria e inferior. No es un gran problema, independientemente. Mi voto único no afectará su credibilidad de manera significativa. –

0

Desde iOS 8.1 UIKit marco tiene la función UIImageWriteToSavedPhotosAlbum() como se dijo vishy.

lo uso de esta forma:

UIImageWriteToSavedPhotosAlbum(myImage, self, "image:didFinishSavingWithError:contextInfo:", nil) 

y luego

func image(image: UIImage, didFinishSavingWithError error: NSError?, contextInfo:UnsafePointer<Void>) { 
    // check error, report image has been saved, ... 
} 
0

Cuando se toma una foto de la cámara, a continuación, puede guardar la imagen en el selector de delegado:

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info 
{ 
    UIImage *image = [info valueForKey:UIImagePickerControllerEditedImage]; 
    [library writeImageToSavedPhotosAlbum:image.CGImage metadata:[info objectForKey:UIImagePickerControllerMediaMetadata] completionBlock:^(NSURL *assetURL, NSError *error) { 
... 
    }]; 



    [picker dismissViewControllerAnimated:YES completion:nil]; 
} 
Cuestiones relacionadas