Как объединить несколько UIImageViews в один UIImage - PullRequest
4 голосов
/ 01 апреля 2010

У меня есть 2 UIImageViews, лежащих друг на друге (картинка + оверлейная рамка), и я хочу сохранить их в рулон камеры как 1 изображение.

Как мне объединить эти 2 UIImageViews, чтобы я мог вызывать функцию UIImageWriteToSavedPhotosAlbum, используя UIImage 'result'?

Ответы [ 3 ]

15 голосов
/ 06 декабря 2010
+ (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; }
4 голосов
/ 01 апреля 2010

В данный момент у меня нет моего Mac, но я делал это раньше. Процесс состоит в том, что вы визуализируете UIImageView s в растровом контексте, а затем создаете CGImage из этого контекста, из которого вы можете использовать для создания нового UIImage. Читайте о CGBitmapContext, в том числе CGBitmapContextCreateImage

1 голос
/ 17 сентября 2012

Для объединения двух изображений в одно изображение используйте следующий код:

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

}
...