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