2010-10-05 8 views
0

Je souhaite fusionner deux images dont l'une est une carte de voeux avec une partie en forme de cœur transparente et l'autre est l'image d'un couple. Maintenant, je veux que l'image du couple soit mobile afin que je puisse les déplacer et les redimensionner pour les placer dans cette partie du coeur et ensuite je veux enregistrer ce mélange d'image comme une image et l'envoyer comme pièce jointe ... fournissez-moi le lien de tels exemples ou solutions.Fusionner 2 images où l'on est mobile

Toute aide serait vraiment appréciée.

Merci à l'avance ...

Répondre

1

Voici comment je l'ai fait masquage et cela a fonctionné pour moi.

- (UIImage*) maskImage:(UIImage *)image withMask:(UIImage *)maskImage1 
{ 

    float width,height; 
     width=288.0; 
     height=274.0; 

    CGContextRef mainViewContentContext; CGColorSpaceRef colorSpace; 
    UIImage *orgImage=image; 

    CGImageRef img = [orgImage CGImage]; 

    colorSpace = CGColorSpaceCreateDeviceRGB(); 

    mainViewContentContext = CGBitmapContextCreate (NULL, width, height, 8, 0, colorSpace, kCGImageAlphaPremultipliedLast); 
    CGColorSpaceRelease(colorSpace); 

    if (mainViewContentContext==NULL) 
     return NULL; 

    CGRect subImageRect; 
    CGImageRef tileImage; 
    float xCord=0; 
    float yCord=0; 
    subImageRect = CGRectMake(xCord,yCord,width,height); 
    tileImage = CGImageCreateWithImageInRect(img,subImageRect); 
    //UIImageWriteToSavedPhotosAlbum([UIImage imageWithCGImage:tileImage],nil,nil,nil); 
    CGImageRef maskImage = maskImage1.CGImage; 
    CGContextClipToMask(mainViewContentContext, CGRectMake(0, 0, width, height), maskImage); 
    CGContextDrawImage(mainViewContentContext, CGRectMake(0, 0, width, height), tileImage); 
    //UIImageWriteToSavedPhotosAlbum([UIImage imageWithCGImage: maskImage],nil,nil,nil); 
    CGImageRef mainViewContentBitmapContext = CGBitmapContextCreateImage(mainViewContentContext); 
    CGContextRelease(mainViewContentContext); 
    UIImage *theImage = [UIImage imageWithCGImage:mainViewContentBitmapContext]; 
    //UIImageWriteToSavedPhotosAlbum(theImage,nil,nil,nil); 
    CGImageRelease(mainViewContentBitmapContext); 
    return theImage; 
} 

ET CECI EST COMMENT JE SUIS L'IMAGE PROPOSÉE

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { 

    if([timer isValid]) 
     [timer invalidate]; 

    NSSet *allTouches = [event allTouches]; 

    switch ([allTouches count]) 
    { 
     case 1: { 
      //The image is being panned (moved left or right) 
      UITouch *touch = [[allTouches allObjects] objectAtIndex:0]; 
      CGPoint centerPoint = [touch locationInView:[self view]]; 

      [imgView setCenter:centerPoint]; 

      NSLog(@"Center.x=%f Center.y=%f",centerPoint.x,centerPoint.y); 


     } break; 
     case 2: { 
      //The image is being zoomed in or out. 

      UITouch *touch1 = [[allTouches allObjects] objectAtIndex:0]; 
      UITouch *touch2 = [[allTouches allObjects] objectAtIndex:1]; 

      //Calculate the distance between the two fingers. 
      CGFloat finalDistance = [self distanceBetweenTwoPoints:[touch1 locationInView:[self view]] toPoint:[touch2 locationInView:[self view]]]; 
      NSLog(@"Initial=%f Final=%f",initialDistance,finalDistance); 
      //Check if zoom in or zoom out. 
      //Check if zoom in or zoom out. 




      int width; 
      int height; 

      if(initialDistance < finalDistance) { 
       NSLog(@"Zoom Out"); 

       zx=imgView.frame.origin.x-2.5; 
       zy=imgView.frame.origin.y-2.5; 
       width=imgView.frame.size.width+5; 
       height=imgView.frame.size.height+5; 

      } 
      else 
      { 
       NSLog(@"Zoom In"); 



       zx=imgView.frame.origin.x+2.5; 
       zy=imgView.frame.origin.y+2.5; 
           width=imgView.frame.size.width-5; 
           height=imgView.frame.size.height-5; 

      } 

      imgView.frame = CGRectMake(zx,zy,width,height); 
      initialDistance = finalDistance; 

     } break; 
    } 

} 

... HEUREUX CODAGE