我正在尝试将过滤器或应用了过滤器的图像滑过另一张图像。我已经包含了一个我正在尝试做的事情的视频Snap chat filter example
目前我有一个带有原始图像的UIView(self.mainImage.image),我使用以下代码创建了一个过滤器:
- (void)applyBWFilter {
UIImage *img = [_images peak];
// Add B&W filter
// Create image rectangle with current image width/height
CGRect imageRect = CGRectMake(0, 0, img.size.width, img.size.height);
// Grayscale color space
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceGray();
// Create bitmap content with current image size and grayscale colorspace
CGContextRef context = CGBitmapContextCreate(nil, img.size.width, img.size.height, 8, 0, colorSpace, kCGImageAlphaNone);
// Draw image into current context, with specified rectangle
// using previously defined context (with grayscale colorspace)
CGContextDrawImage(context, imageRect, [img CGImage]);
// Create bitmap image info from pixel data in current context
CGImageRef imageRef = CGBitmapContextCreateImage(context);
// Create a new UIImage object
self.mainImage.image = [UIImage imageWithCGImage:imageRef];
// Release colorspace, context and bitmap information
CGColorSpaceRelease(colorSpace);
CGContextRelease(context);
CFRelease(imageRef);
}
如何让新图像像示例一样滑过旧图像?
答案 0 :(得分:0)
有很多方法可以做到这一点。可能最简单的方法是首先生成替换图像。然后将其安装在图像视图中并将其放在现有图像视图的顶部。添加与新的过滤图像大小相同的CAShapeLayer,作为“过滤器应用”图像视图的遮罩层。从形状图层开始为空。添加一个不透明的矩形UIBezierPath的CGPath作为形状图层中的形状,但是矩形的位置在屏幕外移动,因此它不可见。
最后,在移动矩形路径以填充图像内容时,为形状图层设置更改动画。
空形图层将完全遮盖图像以开始。当您将不透明的矩形形状设置为适当的位置时,它会将过滤后的图像显示为视图中的动画。