【iOS开发】生成高斯模糊效果背景
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了【iOS开发】生成高斯模糊效果背景相关的知识,希望对你有一定的参考价值。
参考技术A 做开发时,总是使用系统默认的白色背景会显得有些生硬,所以当我们以展示图片为目的时,不妨将图片放大、再做高斯模糊处理以作为背景。我把这个处理过程用 Swift 封装成了一个函数,供大家参考。
三个参数分别为:image(原始清晰图片)、view(你需要将生成的模糊背景插入在这个view的下层当做背景)、blurRadius(高斯模糊处理的模糊半径)
其中 let context = CIContext(options: nil)
这一句,在真机测试时,会引起控制台报错
这是苹果的一个 Bug ,想要回避这个信息输出可以用下面这一句进行替换:
let context = CIContext(options:[kCIContextUseSoftwareRenderer : true])
这句可以使图片渲染工作在 CPU 而非 GPU 完成,从而绕过这个 Bug,但是会引起效率下降,耗时大大增加,不推荐使用。
使用效果展示:
iOS 图片处理——高斯模糊背景
线上一张对比图:
很明显,上面的图片是是模糊的效果,而我们在实际开发中也经常使用到这样的图片作为背景,这种效果有很多方法可以做到。来说一个简单的方法,代码来咯:
//加载图片 创建imageView UIImage *image = [UIImage imageNamed:@"psb.png"]; UIImageView * imageview = [[UIImageView alloc] init]; imageview.contentMode = UIViewContentModeScaleAspectFit; imageview.frame = CGRectMake(0, 80, 320, 320); [self.view addSubview:imageview]; //转换图片 CIContext *context = [CIContext contextWithOptions:nil]; CIImage *midImage = [CIImage imageWithData:UIImagePNGRepresentation(image)]; //图片开始处理 CIFilter *filter = [CIFilter filterWithName:@"CIGaussianBlur"]; [filter setValue:midImage forKey:kCIInputImageKey]; //value 改变模糊效果值 [filter setValue:@7.0f forKey:@"inputRadius"]; CIImage *result = [filter valueForKey:kCIOutputImageKey]; CGImageRef outimage = [context createCGImage:result fromRect:[result extent]]; //转换成UIimage UIImage *resultImage = [UIImage imageWithCGImage:outimage]; imageview.image = resultImage;
是不是很简单呢
以上是关于【iOS开发】生成高斯模糊效果背景的主要内容,如果未能解决你的问题,请参考以下文章