creating and drawing on a new UIImage
February 23, 2009
Someone asked me how to create a new image and draw another UIImage on it. Here’s the public answer, so everyone can benefit
You can make a new image with using core graphics, but there is group of higher level functions in UIKit that are a lot easier to use. For more information please check out the UIKit Function Reference section in the iPhone SDK docs.
This snippet creates a new image context, draws the input image on it and converts the image context to a UIImage. Note that the maximum size of the new image is 1024×1024 due to graphics limitations of the iPhone.
CGFloat width, height; // max 1024 due to Core Graphics limitations
UIImage *
inputImage; // input image to be composited over new image as example
// create a new bitmap image context
//
UIGraphicsBeginImageContext(
CGSizeMake(
width, height)
)
;
// get context
//
CGContextRef context =
UIGraphicsGetCurrentContext(
)
;
// push context to make it current
// (need to do this manually because we are not drawing in a UIView)
//
UIGraphicsPushContext(
context)
;
// drawing code comes here- look at CGContext reference
// for available operations
//
// this example draws the inputImage into the context
//
[
inputImage drawInRect:
CGRectMake(
0
, 0
, width, height)
]
;
// pop context
//
UIGraphicsPopContext(
)
;
// get a UIImage from the image context- enjoy!!!
//
UIImage *
outputImage =
UIGraphicsGetImageFromCurrentImageContext(
)
;
// clean up drawing environment
//
UIGraphicsEndImageContext(
)
;