2010-12-14 9 views
6
CGContextRef context = ??; // get from UIImage *oldImage 

    CGContextSaveGState(context); 
    CGRect drawRect = CGRectMake(0, 0, 320, 480); 
    CGContextConcatCTM(context, transform); 
    UIImage *newImage = [[UIImage alloc] init]; 
    CGContextDrawImage(context, drawRect, newImage.CGImage); 
    [newImage drawInRect:CGRectMake(0, 0, 320, 480)]; 

    CGContextRestoreGState(context);

En resumen, lo que quiero hacer es [UIImage -> make some transform -> UIImage transformado].¿Cómo podría obtener CGContextRef de UIImage?

¿Alguna idea? ¡¡Muchas gracias!!

Respuesta

8

Creo que lo que necesita es la siguiente:

UIGraphicsBeginImageContextWithOptions(newImageSize, YES, 0); 
CGContextRef context = UIGraphicsGetCurrentContext(); 
// drawing commands go here 
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 

Tenga en cuenta que UIGraphicsGetImageFromCurrentImageContext() devuelve una instancia UIImage autoreleased.

+0

Gracias, pero ¿qué me dieron una imagen al revés ni siquiera hice nada? –

+0

Si utiliza Core Graphics para dibujar (por ejemplo, 'CGContextDrawImage()'), recuerde que utiliza un sistema de coordenadas volteado. Los métodos de dibujo de UIImage no requieren el pre-volteo del sistema de coordenadas. – Costique

+0

Pregunta de Noob: Esto parece terriblemente inútil ... Solo quiero adjuntar un poco de datos en la parte superior de mi imagen. Odio volver a dibujar todo para esto. – Ralphleon

Cuestiones relacionadas