最近由于项目需求,需要使用图片模糊效果,根据自己的经验和使用心得整理一下几种使用方法。
先看下整体效果
原始图片:
模糊效果:
梳理了四种方案:
一:在图片上加mask遮罩图片
这个图片大多数都是UI给的切图,大多数初级人员应该都是这么做的,虽然可以实现效果,不过应该比较low,不应该满足于此,应该去了解一下其他解决方案。这种方式比较简单,我就不多说了。
二:CoreImage的模糊滤镜
CoreImage是苹果用来简化图片处理的框架
直接上代码:
UIImage * sourceImage = [UIImage imageNamed:@"个人中心-好友动态-富文本详情"];
CIImage * ciImage = [[CIImage alloc] initWithImage:sourceImage];
CIFilter * blurFilter = [CIFilter filterWithName:@"CIGaussianBlur"];
//将图片输入到滤镜中
[blurFilter setValue:ciImage forKey:kCIInputImageKey];
//设置模糊程度
[blurFilter setValue:@(5) forKey:@"inputRadius"];
NSLog(@"查看blurFilter的属性--- %@",blurFilter.attributes);
//将处理之后的图片输出
CIImage * outCiImage = [blurFilter valueForKey:kCIOutputImageKey];
CIContext * context = [CIContext contextWithOptions:nil];
//获取CGImage句柄
CGImageRef outCGImageRef = [context createCGImage:outCiImage fromRect:[outCiImage extent]];
//获取到最终图片
UIImage * resultImage = [UIImage imageWithCGImage:outCGImageRef];
//释放句柄
CGImageRelease(outCGImageRef);
UIImageView * imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.width * sourceImage.size.height / sourceImage.size.width)];
[imageView setImage:resultImage];
[self.view addSubview:imageView];
三:Accelerate框架实现 模糊效果
此种模糊效果比CoreImage效果更美观
这种方式的效果效率要比CoreImage要高。
这种方式可以查看我的demo github地址https://github.com/EricLihuifeng/UIImageCategory
刚开始玩git demo应该有不足之处 还望指教!
四: iOS8 苹果提供的 UIVisualEffectView模糊效果
特点:
UIVisualEffectView的模糊效果是即时渲染的
如果在UIVisualEffectView上做一些文本显示的话 需要特殊处理
只能在iOS8以上使用
未完待续 。。。