如何在-drawRect:之外将两个UIImage对象组合为一个UIImage



我有几个UIImage对象,我想把它们组合成一个UIImage,然后保存到磁盘上。我没有在屏幕上显示这个,所以在drawRect中做它没有意义。

有没有一种方法可以创建类似于-drawRect:的上下文,然后使用类似CGContextDrawImage(context, imgRect, img.CGImage);的东西在其中绘制UIImage对象?

我相信您希望使用CGContextRef在所需位置绘制所有图像,然后获得结果图像。代码看起来像这样:

CGContextRef context = CGBitmapContextCreate(nil, desired_width, desired_height, bitsPerComponent, bytesPerRow, CGColorSpaceCreateDeviceRGB(), CGImageGetBitmapInfo(image));
//This code is to ilustrate what you have to do:
for(image in your Images) {
    CGContextDrawImage(context, CGRectMake(currentImage.frame.origin.x, currentImage.frame.origin.y, CGImageGetWidth(currentImage), CGImageGetHeight(currentImage), currentImage);
}
CGImageRef mergeResult  = CGBitmapContextCreateImage(context);
mergedImage = [[UIImage alloc] initWithCGImage:mergeResult];
CGContextRelease(context);
CGImageRelease(mergeResult);

CGContextRef可以随时创建,这允许您进行各种图像操作。

使用CGBitmapContextCreate创建上下文,使用CGBitmapContextCreateImage获得最终结果。

最新更新