如何通过添加叠加来捕获照片 [英] How to capture photo by adding overlay
本文介绍了如何通过添加叠加来捕获照片的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我在拍摄照片时尝试添加叠加。我可以在预览中成功添加叠加,但一旦我点击照片捕获按钮,重叠视图(大约40像素)将颠倒,我试图保存在相册中的图像,但保存的图像不包含覆盖图像。
I tried to add overlay when capturing the photo. i could successfully add the overlay in preview but once i tap the photo capture button,the overlay view (around 40px ) will upside down and also i tried to save the image in photo album but saved image does not contain the overlay image.
我附上以下,如果我错了请指导我?
i attached the below, if i am wrong please guide me?
//In ViewDidLoad//
OverlayView *overlay = [[OverlayView alloc] initWithFrame:CGRectMake(0, 0, 320, 460)];
UIImagePickerController *picker = [[UIImagePickerController alloc] init];
picker.sourceType = UIImagePickerControllerSourceTypeCamera;
picker.cameraCaptureMode = UIImagePickerControllerCameraCaptureModePhoto;
[picker setDelegate:self];
picker.showsCameraControls = YES;
picker.navigationBarHidden = YES;
picker.toolbarHidden = YES;
picker.wantsFullScreenLayout = YES;
picker.cameraViewTransform = CGAffineTransformScale(picker.cameraViewTransform, 1, 1.24299);
picker.cameraOverlayView = overlay;
[self presentModalViewController:picker animated:YES];
[picker release];
- (void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
// Access the uncropped image from info dictionary
UIImage *image = [info objectForKey:@"UIImagePickerControllerOriginalImage"];
// Save image
UIImageWriteToSavedPhotosAlbum(image, self, @selector(image:didFinishSavingWithError:contextInfo:), nil);
}
- (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo
{
UIAlertView *alert;
// Unable to save the image
if (error)
alert = [[UIAlertView alloc] initWithTitle:@"Error"
message:@"Unable to save image to Photo Album."
delegate:self cancelButtonTitle:@"Ok"
otherButtonTitles:nil];
else // All is well
alert = [[UIAlertView alloc] initWithTitle:@"Success"
message:@"Image saved to Photo Album."
delegate:self cancelButtonTitle:@"Ok"
otherButtonTitles:nil];
[alert show];
alert.delegate = self;
[alert release];
}
//In OverlayView.m file
- (id)initWithFrame:(CGRect)frame {
if ((self = [super initWithFrame:frame])) {
// Clear the background of the overlay:
self.opaque = NO;
self.backgroundColor = [UIColor clearColor];
// Load the image to show in the overlay:
UIImage *overlayGraphic = [UIImage imageNamed:@"img3.png"];
UIImageView *overlayGraphicView = [[UIImageView alloc] initWithImage:overlayGraphic];
overlayGraphicView.frame = CGRectMake(0, 50, 320, 430);
[self addSubview:overlayGraphicView];
[overlayGraphicView release];
}
return self;
}
感谢advace
推荐答案
如下所示创建捕获照片后的图片:
Creating image after capturing photo like this:
UIImage *capturedImage = [UIImage imageNamed:@"bottom.png"]; //Captured image
UIImage *overlayImage = [UIImage imageNamed:@"top.png"]; //foverlayImage image
CGSize newSize = capturedImage.size
UIGraphicsBeginImageContext( newSize );
[capturedImage drawInRect:CGRectMake(0,0,newSize.width,newSize.height)];
// Apply supplied opacity if applicable
[overlayImage drawInRect:CGRectMake(0,0,newSize.width,newSize.height) blendMode:kCGBlendModeNormal alpha:0.7];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
这篇关于如何通过添加叠加来捕获照片的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文