图片的高斯模糊效果

Posted 佛系码农

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了图片的高斯模糊效果相关的知识,希望对你有一定的参考价值。

一:常用的是UIVisualEffectView,

是在ios 8 增加的,让我们可以很方便的做出模糊(毛玻璃)效果。

UIVisualEffectView是一个view,就是对这个view对模糊设置后,把这个view 盖在自己的图片上,

 

UIVisualEffectView 包含两种特效,一种叫 UIBlurEffect,一种叫 UIVibrancyEffect。他们都是用来模糊的,区别在于 UIBlurEffect 不会对自身这层进行模糊,UIVibrancyEffect 除了模糊,还会透出一点下面内容的颜色,显得更加艳丽。

   UIBlurEffect *blurEffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleLight];
    UIVisualEffectView *blurView = [[UIVisualEffectView alloc] initWithEffect:blurEffect];
    blurView.frame = myView.bounds;
    [myView addSubview:blurView];

UIBlurEffect有三个参数:

  • UIBlurEffectStyleExtraLight 特别亮

  • UIBlurEffectStyleLight 有点亮

  • UIBlurEffectStyleDark 有点黑

 

二、对 UIImage 进行模糊

如果要兼容 iOS7,用不了 UIVisualEffectView 怎么办?那就用 CIFilter 滤镜对 UIImage 进行模糊。CIFilter 就像 Gaussian Blur(高斯模糊),是对图片直接进行处理。

 

-(UIImage *)convertToBlurImage:(UIImage *)image{
    CIFilter *gaussianBlurFilter = [CIFilter filterWithName:@"CIGaussianBlur"];
    [gaussianBlurFilter setDefaults];
    CIImage *inputImage = [CIImage imageWithCGImage:[image CGImage]];
    [gaussianBlurFilter setValue:inputImage forKey:kCIInputImageKey];
    [gaussianBlurFilter setValue:@5 forKey:kCIInputRadiusKey];
    CIImage *outputImage = [gaussianBlurFilter outputImage];
    CIContext *context   = [CIContext contextWithOptions:nil];
    CGImageRef cgimg     = [context createCGImage:outputImage fromRect:[inputImage extent]];  // note, use input image extent if you want it the same size, the output image extent is larger
    UIImage *convertedImage = [UIImage imageWithCGImage:cgimg];
    return convertedImage;
}

其中 [gaussianBlurFilter setValue:@5 forKey:kCIInputRadiusKey]; 就是用来设置模糊半径的。

 

以上是关于图片的高斯模糊效果的主要内容,如果未能解决你的问题,请参考以下文章

图片的高斯模糊效果

【iOS开发】生成高斯模糊效果背景

高斯模糊效果

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

Python下尝试算法做到图片的高斯模糊

webgl智慧楼宇发光效果算法系列之高斯模糊