【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开发】生成高斯模糊效果背景的主要内容,如果未能解决你的问题,请参考以下文章

高斯模糊效果

iOS开发-图片高斯模糊效果

iOS开发探索-高斯模糊&毛玻璃效果

背景虚化 高斯模糊

如何在 iOS6 中的 UIView 上获得高斯模糊效果

android能对背景做高斯模糊么