如何将多个UIImageView合并成一个UIImage

4

我有两个UIImageView叠放在一起(图片+叠加框),我想将它们作为一张图片保存到相机胶卷中。

我应该如何合并这两个UIImageView,以便我可以调用UIImageWriteToSavedPhotosAlbum函数,使用一个“result”UIImage?

3个回答

15
+ (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; }

我使用的覆盖图像缩放方式如下: 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];但是当我使用[overlayImage drawAtPoint:CGPointMake(0,0) blendMode:kCGBlendModeNormal alpha:1];时,它会给出小图像尺寸。不会按照我在CGRectMake中设置的大小。 - Ram

4

我此刻没有我的Mac电脑,但我以前做过这件事。 具体步骤是将UIImageView渲染到位图上下文中,然后从该上下文创建CGImage,再用它创建一个新的UIImage。 请阅读有关CGBitmapContext的内容,包括CGBitmapContextCreateImage


1
使用以下代码将两个图像合并为一个图像:
- (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;

}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接