views:

469

answers:

1

I create a context from an UIImage, and then I draw into it with

CGContextDrawImage(bitmapContext, CGRectMake(0, 0, originalImage.size.width, originalImage.size.height), oImageRef);

the image appears upside-down due to the flipped coordinate system in quartz. How can I fix that?

+1  A: 

You should be able to transform the context using something similar to the following:

CGContextSaveGState(bitmapContext);
CGContextTranslateCTM(bitmapContext, 0.0f, originalImage.size.height);
CGContextScaleCTM(bitmapContext, 1.0f, -1.0f);

// Draw here
CGContextDrawImage(bitmapContext, CGRectMake(0, 0, originalImage.size.width, originalImage.size.height), oImageRef);

CGContextRestoreGState(bitmapContext);

The translation may not be necessary for the image drawing, but I needed it when I wanted to draw inverted text. If this is the only thing you'll be doing in the context, you might also be able to get rid of the calls to save and restore the context's state.

Brad Larson
Perfect! You're my hero ;)
Thanks
I only needed CGContextTranslateCTM and CGContextScaleCTM. Just called that right after UIGraphicsBeginImageContext. Cool stuff!
Thanks