How to merge multiple UIImageViews into one UIImag

2019-03-30 16:49发布

问题:

I have 2 UIImageViews laying on top of each other ( picture + overlay frame ) and I want to save them to the camera roll as 1 picture.

How should I combine those 2 UIImageViews so that I can call the UIImageWriteToSavedPhotosAlbum function, using a 'result' UIImage?

回答1:

I don't have my Mac nearby at the moment, but I have done this before. The process is that you'll render the UIImageViews into a bitmap context, then create a CGImage from that context that you can use to create a new UIImage from. Read up on CGBitmapContext, including CGBitmapContextCreateImage



回答2:

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


回答3:

To merge two images in one image use the following code:

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

}