Sto usando il seguente codice per eseguire alcune manipolazioni su l'immagine che ho caricato, ma trovo che il display diventa sfocata quando è sul display retinaCoreGraphics per display 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;
}
Come posso cambiare questo per renderlo retina compatibile.
Grazie in anticipo per il vostro aiuto
migliore, DV
Grazie! Questo metodo ha risolto il mio problema !! – DKV
Se modifichi il CTM (current transform matrix) del tuo contesto chiamando 'CGContextScaleCTM (UIGraphicsGetCurrentContext(), 2, 2)', non è necessario moltiplicare manualmente le coordinate, puoi semplicemente disegnare come faresti con immagini non retinate. – epologee
Siamo spiacenti, è stato troppo veloce con il commento e troppo tardi per la modifica. Se lo fai in questo modo, non devi pensare di ridimensionare tutte le coordinate tu stesso: 'Scala CGFloat = [[Scala schermo UIScreen]]; CGContextScaleCTM (UIGraphicsGetCurrentContext(), scala, scala); ' – epologee