Ios 带子视图矩形的UIImage裁剪区域

Ios 带子视图矩形的UIImage裁剪区域,ios,objective-c,uiimage,Ios,Objective C,Uiimage,这就是我的困境。我制作了一个二维扫描仪,需要将二维码左上角的彩色部分裁剪到自己的图像中进行进一步处理。 蓝色边界框是self.view的子视图,红色边界框是蓝色边界框的子视图。Im使用AVCaptureStillImageOutput生成图像;代码如下 [_imageOutput captureStillImageAsynchronouslyFromConnection:videoConnection completionHandler: ^(CMSampleBufferRef ima

这就是我的困境。我制作了一个二维扫描仪,需要将二维码左上角的彩色部分裁剪到自己的图像中进行进一步处理。

蓝色边界框是self.view的子视图,红色边界框是蓝色边界框的子视图。Im使用AVCaptureStillImageOutput生成图像;代码如下

    [_imageOutput captureStillImageAsynchronouslyFromConnection:videoConnection completionHandler: ^(CMSampleBufferRef imageSampleBuffer, NSError *error) {

     NSData *jpegData = [AVCaptureStillImageOutput jpegStillImageNSDataRepresentation:imageSampleBuffer];
     UIImage *takenImage = [UIImage imageWithData:jpegData];

     //crop and process takenImage
     // tried utilizing convertRect:toView: and crop result is completely wrong.
     CGRect redFrame = [_colorBox convertRect:_colorBox.bounds toView:self.view];
 }];

我真的很感谢大家对我的帮助,因为我已经做了好几天了,我已经不知所措了。谢谢

您能将您的解决方案应用到我的示例代码中吗?我尝试过实现它,但没有得到预期的结果。谢谢@khoren Asatryan您可以使用所需的CGRect对uiview进行快照。@TejaNandamuri所需的rect是红色边框的矩形。我该怎么做呢?。我知道如何将UIView转换为一个屏幕截图的图像。但是其他的@skramcreopFrame您的幼体框架,支持您的图像视图框架,
CGSize screenS = supperFrame.size;

CGFloat delX = image.size.width / screenS.width;
CGFloat delY = image.size.height / screenS.height;

CGRect sourceRect = CGRectMake(frame.origin.x * delX, frame.origin.y * delY, frame.size.width * delX, frame.size.height * delY);
CGImageRef imageRef = CGImageCreateWithImageInRect(image.CGImage, sourceRect);


UIImage *cropImage = [UIImage imageWithCGImage:imageRef];
CGImageRelease(imageRef);
return cropImage;
- (UIImage *)imageAtFrameImage:(UIImage *)image creopFrame:(CGRect)creopFrame supperFrame:(CGRect)supperFrame {

    CGSize screenS = supperFrame.size;

    CGFloat delX = image.size.width / screenS.width;
    CGFloat delY = image.size.height / screenS.height;

    CGRect sourceRect = CGRectMake(creopFrame.origin.x * delX, creopFrame.origin.y * delY, creopFrame.size.width * delX, creopFrame.size.height * delY);
    CGImageRef imageRef = CGImageCreateWithImageInRect(image.CGImage, sourceRect);


    UIImage *cropImage = [UIImage imageWithCGImage:imageRef];
    CGImageRelease(imageRef);
    return cropImage;
}