我将AVFoundation的照片捕捉到AVCaptureVideoPreviewLayer时创建了UIBezierPath。我在屏幕的位置添加了一个UIBezierPath,我希望得到这个UIBezierPath后面的照片区域。
我想得到这样的照片:
我使用此代码,但我无法得到这个,我总是得到像原始大小的uiimage,左上角的区域非常像这样:
如何保持原始图像的比例并且仅剪切由路径确定的区域?
这是我的代码,出了什么问题?
AVCaptureConnection *connection = [stillImageOutput connectionWithMediaType:AVMediaTypeVideo];
[stillImageOutput captureStillImageAsynchronouslyFromConnection:connection completionHandler:^(CMSampleBufferRef imageDataSampleBuffer, NSError *error) {
NSData *imageData=[AVCaptureStillImageOutput jpegStillImageNSDataRepresentation:imageDataSampleBuffer];
UIImage *image=[UIImage imageWithData:imageData];
UIBezierPath* path = [UIBezierPath new];
[path moveToPoint:[points[0] CGPointValue]];
for (NSInteger i = 1; i < points.count; i++)
[path addLineToPoint:[points[i] CGPointValue]];
UIGraphicsBeginImageContextWithOptions(image.size, NO, image.scale);
[path addClip];
[image drawAtPoint:CGPointZero];
UIImage *maskedImage = UIGraphicsGetImageFromCurrentImageContext();
UIImageWriteToSavedPhotosAlbum(maskedImage, nil, nil, nil);
UIGraphicsEndImageContext();
}];