比如说我们现在有两张图片需要合并,是把一个滑稽的帽子放到一个人的头上。这里是两个UIImage:
UIImage *personImage = [UIImage imageNamed:@"person.jpg"]; UIImage *hatImage = [UIImage imageNamed:@"hat.png];
这种情况下我们需要最终合成的图片大小是和person一致的,让我们获得我们需要的最终图片的大小:
CGSize finalSize = [personImage size];
然后再搞到hat的大小,可能比person要小得多:
CGSize hatSize = [hatImage size];
现在我们需要创建一个graphics context来画我们的东西:
UIGraphicsBeginImageContext(finalSize);
graphics context就像一张能让我们画上任何东西的纸。我们要做的第一件事就是把person画上去:
[personImage drawInRect:CGRectMake(0,0,finalSize.width,finalSize.height)];
然后再把hat画在合适的位置:
[hatImage drawInRect:CGRectMake(HAT_X_POS,HAT_Y_POS,hatSize.width,hatSize.height)];
接着通过下面的语句创建新的UIImage:
UIImage *newImage = [UIGraphicsGetImageFromCurrentImageContext();
最后,我们必须得清理并关闭这个我们再也不需要的context:
UIGraphicsEndImageContext();
打完收工。
原创:http://www.musicalgeometry.com/?p=1681