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

Другие вопросы по тегам