例如,您可以执行以下操作,创建位图上下文,添加剪切路径,将图像绘制到该上下文中,然后将图像从该上下文中提取出来:
NSString *path = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"jpg"];
UIImage *image = [UIImage imageWithContentsOfFile:path];
size_t width = image.size.width, height = image.size.height;
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGBitmapInfo bitmapInfo = (CGBitmapInfo)kCGImageAlphaPremultipliedLast;
CGContextRef context = CGBitmapContextCreate(NULL, width, height, 8, 4 * width, colorSpace, bitmapInfo);
CGRect rect = ...
CGContextAddEllipseInRect(context, rect);
CGContextClip(context);
CGContextDrawImage(context, CGRectMake(0, 0, width, height), image.CGImage);
CGImageRef imageRef = CGBitmapContextCreateImage(context);
UIImage *final = [UIImage imageWithCGImage:imageRef];
NSData *data = UIImagePNGRepresentation(final);
NSString *documentsPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];
NSString *savePath = [documentsPath stringByAppendingPathComponent:@"final.png"];
[data writeToFile:savePath atomically:YES];
CGColorSpaceRelease(colorSpace);
CGImageRelease(imageRef);
CGContextRelease(context);
有关详细信息,请参阅Quartz 2D Programming Guide。或参考CGContext Reference。