这里简单介绍一下高斯模糊效果.这里介绍的是coreImage,原理很简单就是抓取现在当前的image,然后设置高斯模糊.
首先是获取当前的image:(两种方法)
方法一:
- (UIImage *)snapshot:(UIView *)view
{
UIGraphicsBeginImageContextWithOptions(view.bounds.size, YES, 0);
[view drawViewHierarchyInRect:view.bounds afterScreenUpdates:YES];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
}
方法二
- (UIImage *)imageOfView:(UIView *)view
{
UIGraphicsBeginImageContext(view.bounds.size); //currentView 当前的view
[view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *screenImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return screenImage;
}
- (void)addToView:(UIView *)view{
UIImage *screenImage = [self snapshot:view];
UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, kwidth, kheight)];
imageView.userInteractionEnabled = YES;
[view addSubview:imageView];
CIContext *context = [CIContext contextWithOptions:nil];
UIImage *oldImage = screenImage;
CIImage *inputImage = [[CIImage alloc] initWithImage:oldImage];
// create gaussian blur filter
CIFilter *filter = [CIFilter filterWithName:@"CIGaussianBlur"];
[filter setValue:inputImage forKey:kCIInputImageKey];
[filter setValue:[NSNumber numberWithFloat:20.0] forKey:@"inputRadius"];
// blur image
CIImage *result = [filter valueForKey:kCIOutputImageKey];
CGImageRef cgImage = [context createCGImage:result fromRect:[result extent]];
UIImage *image = [UIImage imageWithCGImage:cgImage];
CGImageRelease(cgImage);
imageView.image = image;
}