我正面临一些真正的问题。我已经学习了几个使用UIImagePickerController和AVFoundation在相机中添加叠加层的教程。一切工作都很好。我可以使用两者在相机上添加叠加层。然而,我主要关心的是,当用户点击扫描按钮时,提取该覆盖视图下的那部分图像。我在覆盖图和按钮中显示白色视图,因此只能检索该白色视图下的图像。iOS相机覆盖拍摄图像
-(IBAction)cameraClicked:(id)sender {
OverlayView *overlay = [[OverlayView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];
self.imagePickerController = [[UIImagePickerController alloc] init];
self.imagePickerController.delegate = self;
if ([UIImagePickerController
isCameraDeviceAvailable:UIImagePickerControllerCameraDeviceRear]) {
self.imagePickerController.sourceType = UIImagePickerControllerSourceTypeCamera;
self.imagePickerController.cameraCaptureMode =
UIImagePickerControllerCameraCaptureModePhoto;
}
else {
self.imagePickerController.sourceType =
UIImagePickerControllerSourceTypeSavedPhotosAlbum;
}
self.imagePickerController.showsCameraControls = NO;
self.imagePickerController.navigationBarHidden = YES;
self.imagePickerController.toolbarHidden = YES;
self.imagePickerController.wantsFullScreenLayout = YES;
self.imagePickerController.cameraViewTransform =
CGAffineTransformScale(self.imagePickerController.cameraViewTransform,
CAMERA_TRANSFORM_X,CAMERA_TRANSFORM_Y);
self.imagePickerController.cameraOverlayView = overlay;
[self presentViewController:self.imagePickerController animated:YES
completion:nil];
}
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];
CGRect cropRect;
UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];
UIImage *crosshair = [UIImage imageNamed:@"overlay.png"];
UIGraphicsBeginImageContext(CGSizeMake(self.view.frame.size.width, self.view.frame.size.height));
[image drawInRect: CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];
UIImage *smallImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
if(isIOS7)
cropRect = CGRectMake(10, 440, crosshair.size.width, crosshair.size.height);
else
cropRect = CGRectMake(10, 405, crosshair.size.width, crosshair.size.height);
CGImageRef imageRef = CGImageCreateWithImageInRect([smallImage CGImage], cropRect);
UIImage *setImage = [UIImage imageWithCGImage:imageRef];
self.finalImageView.image = setImage;
[self dismissViewControllerAnimated:YES completion:nil];
}
我已经更新了我的问题与代码 – user2342321