答案 0 :(得分:4)
不要使用CGBitmapContextCreate,使用UIGraphicsBeginImageContextWithOptions,它要容易得多。像这样使用它:
UIGraphicsBeginImageContextWithOptions(CGSizeMake(width, height), YES, 1.0f);
CGContextRef context = UIGraphicsGetCurrentContext();
//do your drawing
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEdnImageContext();
//your resultant UIImage is now stored in image variable
UIGraphicsBeginImageContext的三个参数是:
图片的大小 - 这可以是您想要的任何内容
图片是否具有透明度
图像中像素的比例。 0.0是默认值,因此在iPhone 3GS上它将是1.0,在带有视网膜显示器的iPhone 4上它将是2.0。你可以传入你想要的任何比例,所以如果你传入5.0,你的图像中的每个像素单位实际上将是位图中的5x5像素,就像Retina显示屏上的1像素在屏幕上真的是2x2像素一样。
编辑:事实证明,UIGraphicsBeginImageContext()是否是线程安全的问题似乎有点争议。如果你确实需要在后台线程上同时执行此操作,那么在这里使用CGBitMapContextCreate()有另一种(相当复杂的方法):UIGraphicsBeginImageContext vs CGBitmapContextCreate