Creo que se necesita una captura de un UIView/UIWindow en la resolución retina (960x640 o 2048x1536) Usando UIGraphicsBeginImageContextWithOptions y establecer su 0.0f parámetro de escala hace que capturar en la resolución nativa (retina para el iPhone 4 y más tarde o iPad 3)
Este código capturar su UIView en la resolución nativa
CGRect rect = [captureView bounds];
UIGraphicsBeginImageContextWithOptions(rect.size,YES,0.0f);
CGContextRef context = UIGraphicsGetCurrentContext();
[captureView.layer renderInContext:context];
UIImage *capturedImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
Ésta hace lo mismo para pantalla completa (ventana de clave)
UIWindow *keyWindow = [[UIApplication sharedApplication] keyWindow];
CGRect rect = [keyWindow bounds];
UIGraphicsBeginImageContextWithOptions(rect.size,YES,0.0f);
CGContextRef context = UIGraphicsGetCurrentContext();
[keyWindow.layer renderInContext:context];
UIImage *capturedScreen = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
Esto ahorra el UIImage en formato jpg con una calidad de 95% en la carpeta de documentos de la aplicación
NSString *imagePath = [NSHomeDirectory() stringByAppendingPathComponent:[NSString stringWithFormat:@"Documents/capturedImage.jpg"]];
[UIImageJPEGRepresentation(capturedImage, 0.95) writeToFile:imagePath atomically:YES];
puedes probar con esto también UIGraphicsBeginImageContextWithOptions (view.bounds.size, view.opaque, 0.0); –
gracias, pero nada cambia! –
Cuando dice "baja calidad", ¿a qué se refiere exactamente? La imagen no se ve igual a lo que está en la pantalla? ¿Estás usando una pantalla de retina pero la imagen capturada no es tan nítida? ¿La imagen es granulada o distorsionada? ¿Qué está exactamente mal con eso? – TigerCoding