在IOS中叠加两个图像

时间:2014-01-04 07:12:13

标签: ios quartz-2d

我正在创建一个有趣的项目。

在我的项目中,我正在做的是将面部叠加到物体上,比如我在背景上有脸部图像,我需要在脸部图像上叠加物体(Apple),但它不应该完全重叠但是眼睛,嘴巴功能应该在对象中可见,如url中的图像

enter image description here

到目前为止我做了什么 - 使用AVFoundation我逐帧检测脸部。

接下来我需要叠加两张图片。面部图像和对象,但我需要减少面部对象的alpha分量,使它看起来像苹果说话。

有人可以指导我或提供示例代码,这样我就可以实现相同的叠加效果。

编辑1:

以下是我用来混合两张图片的代码。

UIImage *bottomImage =[UIImage imageNamed:@"face.jpg"];
UIImage *image = imageview.image;

CGSize newSize = CGSizeMake(imageview.frame.size.width, imageview.frame.size.height);
UIGraphicsBeginImageContext( newSize );

// Use existing opacity as is
[bottomImage drawInRect:CGRectMake(0,0,image.size.width,image.size.height)];
// Apply supplied opacity
[image drawInRect:CGRectMake(0,0,newSize.width,newSize.height) blendMode:kCGBlendModeNormal alpha:0.8];

UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();

imageview.image=newImage;
UIGraphicsEndImageContext();

在上面的代码中,我叠加了两张缩小图像alpha的图像,但我不需要这样。我希望减少特定部分,比如我有三个图像,左眼,右眼和嘴,在对象(苹果)中我需要减少alpha仅对象的这三个图像部分而不是整个图像。

1 个答案:

答案 0 :(得分:0)

如果它总是一个矩形区域,那么你可以绘制部分:

  • 将图像划分为具有所需各种alpha值的rects,然后绘制它们。
    • 例如。如果你想要一个尺寸为(100,100)的矩形(200,200),alpha = 0.8 并且休息为alpha = 0.2,width = height = 400
- draw rect, top rect:    (  0,   0) size (400, 100)
- draw rect to the left:  (  0, 100) to   (100, 200)
- draw rect to the right: (300, 100) to   (100, 200)
- draw rect, bottom:      (  0, 300) to   (400, 100)
 ------------
 | top      |
 |          |
 |----------|
 |  | M |   |
 |L |   | R |
 |  |   |   |
 |----------|
 |  bottom  |
 |----------|

分别绘制所有部件,现在可以分别控制它们。这里的M是你的“主要”部分。

对于非矩形的,您可能需要构建一个蒙版并使用它来创建图像。