混合两个图像和从两个的UIImageViews

问题描述:

绘制尺寸调整的图像我有两个ImageViews,一个叫ImageView的和其他的称为子视图(其是ImageView的的子视图)。混合两个图像和从两个的UIImageViews

我想在这些视图混合的图像一起,与用户能够切换所述共混物的α与锅。我的代码工作,但现在,该代码是缓慢的,因为我们每个移动手势移动时重绘图像。有没有更快/更有效的方式来做到这一点?

红利问:我想允许我的subView图像绘制放大。目前我已经设置我的子视图为UIViewContentModeCenter,但我似乎无法使用此内容模式绘制缩放图像的一部分。有没有办法解决?

我的drawRect:

- (void)drawRect:(CGRect)rect 
{ 
float xCenter = self.center.x - self.currentImage1.size.width/2.0; 
float yCenter = self.center.y - self.currentImage1.size.height/2.0; 

subView.alpha = self.blendAmount; // Customize the opacity of the top image. 

UIGraphicsBeginImageContext(self.currentImage1.size); 

CGContextRef c = UIGraphicsGetCurrentContext(); 

CGContextSetBlendMode(c, kCGBlendModeColorBurn); 
[imageView.layer renderInContext:c]; 

self.blendedImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 
[self.blendedImage drawAtPoint:CGPointMake(xCenter,yCenter)]; 

} 

您需要使用GPU进行图像处理,远远比使用CPU快(因为你现在在做什么)。

您可以使用Core Image框架,它非常快速且易于使用,但需要iOS 5,或者您可以直接使用Open GL,但您需要有经验且对Open GL着色有一定的了解。

+0

谢谢 - 我已经尝试切换到使用核心绘图但现在看来,就像我在我的drawRect来达到同样的效果应用两个过滤器:CIColorMatrix(调整顶部图像的阿尔法),然后CIBlendFilter(以添加混合)。这使得整个过程缓慢(如果不是比以前慢!)。你知道有没有办法解决这个问题? – HHHH

+0

设法让这一轮。谢谢你的提示! – HHHH