La captura de pantalla UII pierde su calidad

Estoy fusionando dos imágenes y luego tomo una captura de pantalla aplicando este código:

UIGraphicsBeginImageContext(size); [self.view.layer renderInContext:UIGraphicsGetCurrentContext()]; UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); img_AddText=viewImage; [dragView removeFromSuperview]; imgV_SelectedImg.image=nil; imgV_SelectedImg.image=img_AddText; UIImageWriteToSavedPhotosAlbum(viewImage, nil, nil, nil); 

El problema es que, cuando la image final pierde su calidad, se desdibuja.

Intente usar la versión withOptions de UIGraphicsBeginImageContext

 UIGraphicsBeginImageContextWithOptions(size, NO, 0.0); 

Recibí la instantánea con buena calidad y location particular de la pantalla. Por este código

 -(UIImage *)takeScreenShot { CGRect grabRect; grabRect = CGRectMake(0,70,320,260); UIGraphicsBeginImageContextWithOptions(grabRect.size, self.view.opaque, 0.0); CGContextRef ctx = UIGraphicsGetCurrentContext(); CGContextTranslateCTM(ctx, -grabRect.origin.x, -grabRect.origin.y); [self.view.layer renderInContext:ctx]; UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return viewImage; } 

me da una excelente foto ..

Hice una categoría en la class UIImage que puede ayudarte. Dice así:

 + (UIImage*)imageWithView:(UIView *)view opaque:(BOOL)opaque bgColor:(UIColor*)bgColor{ UIGraphicsBeginImageContextWithOptions(view.bounds.size, opaque, [[UIScreen mainScreen] scale]); if(!opaque){ [bgColor set]; } [view.layer renderInContext:UIGraphicsGetCurrentContext()]; UIImage * img = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return img; } 

Funciona bien para mí. No se detectó desennetworkingo. Trate de usarlo. Si todavía lo tiene, entonces lo más probable es que el problema esté en su código de guardado …

Saludos … 🙂

UIGraphicsBeginImageContextWithOptions (tamaño, NO, 2.0); esto resuelve mi problema aumentando la escala de 1.0 a 2.0

¿Ofreciste una image para la pantalla retina? Deberías comprobarlo. Puede estar ejecutando un simulador (en retina).