que estoy usando el siguiente código para realizar algunas manipulaciones de la imagen que he cargado, pero me parece que la pantalla se vuelve borrosa cuando se está en la pantalla de la retinaCoreGraphics de pantalla de la retina
- (UIImage*)createImageSection:(UIImage*)image section:(CGRect)section
{
float originalWidth = image.size.width ;
float originalHeight = image.size.height ;
int w = originalWidth * section.size.width;
int h = originalHeight * section.size.height;
CGContextRef ctx = CGBitmapContextCreate(nil, w, h, 8, w * 8,CGImageGetColorSpace([image CGImage]), kCGImageAlphaPremultipliedLast);
CGContextClearRect(ctx, CGRectMake(0, 0, originalWidth * section.size.width, originalHeight * section.size.height)); // w + h before
CGContextTranslateCTM(ctx, (float)-originalWidth * section.origin.x, (float)-originalHeight * section.origin.y);
CGContextDrawImage(ctx, CGRectMake(0, 0, originalWidth, originalHeight), [image CGImage]);
CGImageRef cgImage = CGBitmapContextCreateImage(ctx);
UIImage* resultImage = [[UIImage alloc] initWithCGImage:cgImage];
CGContextRelease(ctx);
CGImageRelease(cgImage);
return resultImage;
}
¿Cómo cambio esto para que sea retina compatible.
Gracias de antemano por su ayuda
mejor, DV
Gracias! ¡Este método resolvió mi problema! – DKV
Si cambia la CTM (matriz de transformación actual) de su contexto llamando a 'CGContextScaleCTM (UIGraphicsGetCurrentContext(), 2, 2)', no necesita multiplicar manualmente sus coordenadas, puede dibujar lo mismo que haría con imágenes sin retina. – epologee
Lo sentimos, fue demasiado rápido con el comentario y demasiado tarde para la edición. Si lo hace de esta manera, no necesita pensar en escalar todas las coordenadas usted mismo: 'escala CGFloat = [[UIScreen mainScreen] scale]; CGContextScaleCTM (UIGraphicsGetCurrentContext(), scale, scale); ' – epologee