How could I get CGContextRef from UIImage?

Kordan Ou picture Kordan Ou · Dec 14, 2010 · Viewed 9.4k times · Source
    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);

In short, what I want to do is [ UIImage -> make some transform -> transformed UIImage].

Any ideas? Big thanks!!

Answer

Costique picture Costique · Dec 14, 2010

I think what you need is this:

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

Note that UIGraphicsGetImageFromCurrentImageContext() returns an autoreleased UIImage instance.