2011-10-30 67 views
1

我一直在寻找这个答案一段时间。但我一直无法找到它。平均多个UIImages

我想平均30个UIimages的像素。为此,我想使用Quartz2D来代替所有图像的所有像素。对我而言,为了将30幅图像画在一起,我应该将每个图像的alpha通道调整为1/30。然后,在另一个之上画一个我会得到所需的效果。

所需的式应为:站Dest Px的=(IMG [0] + .PX .... IMG [29] .PX)/ 30

我试图实现它使用imageContext和共混所述图像加上没有运气:

UIGraphicsBeginImageContext(CGSizeMake(sz.width, sz.height)); 

for (int i=0; i<30; i++) { 

    UIImage* img = [self.delegate requestImage:self at:i]; 

    CGPoint coord = [self.delegate requestTranslation:self at:i]; 

    [img drawAtPoint:coord blendMode:kCGBlendModeNormal alpha:1/30]; 

} 

UIImage* im = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 

我怎么能得到许多UIimages的平均图像? 我也尝试添加一个图像与许多sublayers,但我也得到冲洗图像。

谢谢!

回答

1

尝试改变下列:

[img drawAtPoint:coord blendMode:kCGBlendModeNormal alpha:1/30]; 

[img drawAtPoint:coord blendMode:kCGBlendModeNormal alpha:1.0/30.0]; 

1/30(使用整数值)== 0,所以你可以绘制图像完全透明的。通过添加.0,您明确表示您需要CGFloat

+1

谢谢,我发现了这个问题。 我需要升级混合:将alpha 1.0应用于第一个图像,将0.5应用于第二个,将0.33应用于第三个,依此类推。这是因为混合应用于背景。 – user1021161