3 votes

Comment capturer une photo en ajoutant une superposition

J'ai essayé d'ajouter une superposition lors de la capture de la photo. J'ai pu ajouter avec succès la superposition dans l'aperçu mais une fois que j'ai appuyé sur le bouton de capture de la photo, la vue de la superposition (environ 40px) sera à l'envers et j'ai également essayé d'enregistrer l'image dans l'album photo mais l'image enregistrée ne contient pas l'image de superposition.

J'ai joint le document ci-dessous, si je me trompe, veuillez me guider ?

//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;
}

Merci à l'avance

5voto

Prince Points 16165

Créer une image après avoir capturé une photo comme celle-ci :

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();

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X