如何在多点裁剪图像后保存UIImage?

我想多点裁剪图像(见图)。 它的工作正常。 我的问题是裁剪图像后如何保存UIImage 。 我正在使用CAShapeLayer作物图像。 下面的代码用于多点裁剪。

 - (void)multiPointCrop:(CGPoint)cropPoint { UIBezierPath *aPath = [UIBezierPath bezierPath]; [aPath moveToPoint:cropPoint]; for (NSString *pointString in self.touchPoints) { if ([self.touchPoints indexOfObject:pointString] != 0) [aPath addLineToPoint:CGPointFromString(pointString)]; } [aPath addLineToPoint:cropPoint]; [aPath closePath]; [self setClippingPath:aPath andView:self]; [self setNeedsDisplay]; } - (void)setClippingPath:(UIBezierPath *)clippingPath andView:(UIView *)view; { if (![[view layer] mask]) [[view layer] setMask:[CAShapeLayer layer]]; [(CAShapeLayer*) [[view layer] mask] setPath:[clippingPath CGPath]]; } 

如何从CAShapeLayer保存UIImage ? 如果这是多剪裁或其他简单的方法来实现这一目标的正确方法。 请给出你的想法,build议,源代码等任何东西总是欢迎。 在这里输入图像说明

尝试将图层渲染到上下文中,并从该上下文创build图像。

 CALayer *layer = view.layer; CGSize s = layer.frame.size; // create context CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); CGContextRef context = CGBitmapContextCreate(NULL, s.width, s.height, 8, (s.width * 4), colorSpace, kCGImageAlphaPremultipliedLast); // flip Y CGContextTranslateCTM(context, 0.0, s.height); CGContextScaleCTM(context, 1.0, -1.0); // render layer [layer renderInContext:context]; CGImageRef imgRef = CGBitmapContextCreateImage(context); // here is your image UIImage *img = [UIImage imageWithCGImage:imgRef]; // release owned memory CGImageRelease(imgRef); CGColorSpaceRelease(colorSpace); CGContextRelease(context);