2010-04-01 5 views
3

J'ai 2 UIImageViews superposés (image + cadre de superposition) et je veux les enregistrer sur le rouleau comme 1 image.Comment fusionner plusieurs UIImageViews en un seul UIImage

Comment est-ce que je devrais combiner ces 2 UIImageViews de sorte que je puisse appeler la fonction UIImageWriteToSavedPhotosAlbum, using un UIImage de «résultat»?

Répondre

4

Je n'ai pas mon Mac à proximité pour le moment, mais je l'ai déjà fait. Le processus consiste à rendre les UIImageView s dans un contexte bitmap, puis à créer un CGImage à partir de ce contexte que vous pouvez utiliser pour créer un nouveau UIImage. Lisez sur le sujet CGBitmapContext, y compris CGBitmapContextCreateImage

14
+ (UIImage *) mergeImage: (UIImage *) imageA 
           withImage: (UIImage *) imageB 
           strength: (float) strength { 

UIGraphicsBeginImageContextWithOptions(CGSizeMake(imageA.size.width, imageA.size.height), YES, 0.0); 

[imageA drawAtPoint: CGPointMake(0,0)]; 

[imageB drawAtPoint: CGPointMake(0,0) 
      blendMode: kCGBlendModeNormal // you can play with this 
       alpha: strength]; // 0 - 1 

UIImage *answer = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 
return answer; } 
+0

je échelle de l'image de superposition est comme UIImageView * overlayImageView = [[UIImageView alloc] initWithImage : [UIImage imageNamed: @ "img3.png"]]; // [overlayImageView setFrame: CGRectMake (20, 50, 320, 400)]; [overlayImageView setFrame: CGRectMake (30, 50, 250, 250)]; [[self view] addSubview: overlayImageView]; Mais quand j'utilise [overlayImage drawAtPoint: CGPointMake (0,0) blendMode: kCGBlendModeNormal alpha: 1]; ça donne une petite taille d'image. Ne donnera pas ce que je définis dans CGRectMake. – Ram

1

Pour fusionner deux images dans une image utilisent le code suivant:

- (UIImage *) mergeImage: (UIImage *) imageA withImage: (UIImage *) imageB 
{ 

UIGraphicsBeginImageContextWithOptions(CGSizeMake(imageA.size.width, imageA.size.height), YES, 0.0); 

[imageA drawAtPoint: CGPointMake(0,0)]; 

[imageB drawAtPoint: CGPointMake(0,0) 
      blendMode: kCGBlendModeNormal // you can play with this 
       alpha: 1]; // 0 - 1 

UIImage *answer = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 
return answer; 

} 
Questions connexes