我一直在寻找这个答案。但是我找不到它。
我想平均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的平均图像? 我也试过添加一个包含许多子图层的图像,但是我也得到了图像。
谢谢!
答案 0 :(得分:1)
尝试更改以下内容:
[img drawAtPoint:coord blendMode:kCGBlendModeNormal alpha:1/30];
到
[img drawAtPoint:coord blendMode:kCGBlendModeNormal alpha:1.0/30.0];
1/30(使用整数值)== 0,因此您将完全透明地绘制图像。添加.0
即表示您需要CGFloat
。