UIImagePickerController наложение вверх дном в предварительном просмотре
Я хочу добавить вид наложения при захвате фотографии. Я могу успешно добавить наложение и сделать снимок.
После нажатия на кнопку захвата, предварительный просмотр отображается. На этом экране предварительного просмотра вид наложения перевернут (примерно от 20 до 30 пикселей).
При выборе кнопки использования снимок сохраняется в фотоальбоме. В нем изображение в порядке. Это с ног на голову только во время предварительного просмотра.
Я приложил код ниже, пожалуйста, приведите меня к моей ошибке.
-(void)viewDidLoad {
// ...
// Some other actions...
OverlayView *overlay = [[OverlayView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
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.24299, 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
UIImage *overlayImage = [UIImage imageNamed:@"img3.png"]; //foverlayImage image
CGSize newSize = image.size;
UIGraphicsBeginImageContext( newSize );
[image 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:1.0];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
UIImageWriteToSavedPhotosAlbum(newImage, 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];
// All is well
else
alert = [[UIAlertView alloc] initWithTitle:@"Success"
message:@"Image saved to Photo Album."
delegate:self cancelButtonTitle:@"Ok"
otherButtonTitles:nil];
[alert show];
alert.delegate = self;
[alert release];
}
В OverlayView.m
- (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, 0, 320, 460);
[self addSubview:overlayGraphicView];
[overlayGraphicView release];
}
return self;
}
Заранее спасибо.
1 ответ
Решение
Эй, я искал то же самое и наткнулся на эту ссылку, которая объясняет, почему она кажется перевернутой! Надеюсь, что это поможет http://trandangkhoa.blogspot.co.uk/2009/07/iphone-os-drawing-image-and-stupid.html