我将两个图像混合在一起并使用滑块修改alpha值。它们是原始图片和过滤图片。我使用混合来控制滤镜的强度。这是混合函数:
+ (UIImage*)blendImages:(UIImage*)back withTop:(UIImage*)front andAlpha:(float)alpha {
// images are same size
CGSize newSize = CGSizeMake(back.size.width, back.size.height);
UIGraphicsBeginImageContextWithOptions(newSize, NO, back.scale);
// use existing opacity as is on background image
[back drawInRect:CGRectMake(0,0,newSize.width,newSize.height)];
// Apply supplied opacity on foreground
[front drawInRect:CGRectMake(0,0,newSize.width,newSize.height)
blendMode:kCGBlendModeNormal alpha:alpha];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newImage;
}
一切正常,但是有一些alpha值(在这个例子中是0.7f)我得到的结果就像这个(不是突出显示的区域):
如果我稍后再做相同的事情(即相同的功能,相同的alpha值),我得到我想要的结果:
如果我继续使用过滤器,我有时会将亮点变成洋红色或青色。整件事情完全不可预测。但是在某些情况下它是可重复的。以前有没有人经历过这个?将alpha图像与alpha混合的替代方法也非常受欢迎。两个图像(iphone屏幕分辨率)的混合应该不会超过四分之一秒。
请帮忙。
答案 0 :(得分:0)
代码看起来大致正确。您确定从后方图像进入的“比例”值是否正确?如果规模与UIScreen规模不同,可能会以某种方式抛弃阉割。我会尝试手动将比例设置为2.0(如果在视网膜设备上)或1.0(如果在非视网膜上)并查看问题是否消退。