2009-09-04 12 views
5

Estoy tratando de tomar una captura de pantalla de la vista actual de mi aplicación y guardarla en el álbum de fotos (para luego enviarla por correo electrónico o MMS).UIImageWriteToSavedPhotosAlbum guarda en tamaño y calidad incorrectos

UIGraphicsBeginImageContext(self.view.bounds.size); 

[self.view.layer renderInContext:UIGraphicsGetCurrentContext()]; 

UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext(); 

UIGraphicsEndImageContext(); 

UIImageWriteToSavedPhotosAlbum(viewImage, self, @selector(savedPhotoImage:didFinishSavingWithError:contextInfo:), nil); 

Esto funciona, pero la imagen resultante apears a ser más grandes (533x800px) y muy comprimido cuando enviarlo por correo electrónico de la biblioteca de fotos.

Intenté primero escribir el UIImage en el archivo y luego guardarlo en el álbum, pero todavía tengo el mismo problema.

Si utilicé la funcionalidad de captura de pantalla incorporada en el iPhone, la vista se guarda correctamente en el álbum de fotos a 320x480 pero el código anterior parece guardar una imagen más grande por algún motivo.

Gracias!

+0

Debo agregar que esto solo ocurre cuando se prueba en el dispositivo. Todo parece estar bien en el simulador. – wuwongy

Respuesta

1

Tuve el mismo error, por mi parte, que se resolvió cuando redondeé los puntos decimales para que fueran de la misma escala que el iPhone, pruébelo, asegúrese de que la escala sea 1.0, 2.0, etc. y no 3.1, que lo arrojará.

19

Encontré una solución decente, que consiste esencialmente en volver a envolver el UIImage como PNG, y luego guardar la versión reinventada. El código se ve así:

UIImage* im = [UIImage imageWithCGImage:myCGRef]; // make image from CGRef 
NSData* imdata = UIImagePNGRepresentation (im); // get PNG representation 
UIImage* im2 = [UIImage imageWithData:imdata]; // wrap UIImage around PNG representation 
UIImageWriteToSavedPhotosAlbum(im2, nil, nil, nil); // save to photo album 
+1

Esta es la solución al problema de compresión. Las imágenes se almacenarán como PNG en su Biblioteca de fotos. Pruébelo enviando un correo electrónico a la imagen después de que esté en su Biblioteca de fotos. –

Cuestiones relacionadas