# 模糊效果 **Repository Path**: 759625907/blur-effect ## Basic Information - **Project Name**: 模糊效果 - **Description**: 1.CoreImage 2.UIImage+ImageEffects 3.UIVisualEffectView - **Primary Language**: Objective-C - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-06-18 - **Last Updated**: 2022-06-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 模糊效果 #### 介绍 1.CoreImage 2.UIImage+ImageEffects 3.UIVisualEffectView # 1. CoreImage中的模糊滤镜 高斯模糊效果图 * ![高斯模糊前后对比.png](https://upload-images.jianshu.io/upload_images/3115781-83886013c4f86b8b.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) ###核心代码 ``` UIImage *image = [UIImage imageNamed:@"cat.jpg"]; //图片输入源 CIImage *ciImage = [[CIImage alloc] initWithImage:image]; //滤镜 CIFilter *filter = [CIFilter filterWithName:@"CIGaussianBlur"]; //滤镜参数及相关信息 //NSLog(@"%@", [filter attributes]); //设置模糊程度 [filter setValue:@(5) forKey:@"inputRadius"]; //将图片输入到滤镜中 [filter setValue:ciImage forKey:kCIInputImageKey]; //从滤镜中取出处理好的图片 CIImage *outImage = [filter valueForKey:kCIOutputImageKey]; //默认CPU渲染 CIContext *content = [CIContext contextWithOptions:nil]; //获取CGImage句柄 CGImageRef cgImage = [content createCGImage:outImage fromRect:[outImage extent]]; UIImage *blurImage = [UIImage imageWithCGImage:cgImage]; CGImageRelease(cgImage); self.iv.image = blurImage; ``` # 2. UIImage+ImageEffects的category模糊效果 UIImage+ImageEffects是Accelerate框架中的内容 * ![效果图.png](https://upload-images.jianshu.io/upload_images/3115781-50cb98540b746c66.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 核心代码 ``` UIImage *image = [UIImage imageNamed:@"cat.jpg"]; static int i = 0; UIImage *blurImage = nil; if (i == 0) { blurImage = [image blurImage]; }else if (i == 1) { blurImage = [image blurImageAtFrame:(CGRectMake(self.view.center.x, self.view.center.x, 300, 200))]; }else if (i == 2) { blurImage = [image grayScale]; }else { i = -1; blurImage = image; } self.iv.image = blurImage; i++; ``` category地址[[YouXianMing](https://github.com/YouXianMing)/**[UIImageBlur](https://github.com/YouXianMing/UIImageBlur)** ](https://github.com/YouXianMing/UIImageBlur) # 3. UIVisualEffectView模糊效果 UIVisualEffectView的模糊效果是即时渲染的 * ![模糊子View.png](https://upload-images.jianshu.io/upload_images/3115781-73a63dece1336c03.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) ``` //1.创建模糊View UIBlurEffect *blur = [UIBlurEffect effectWithStyle:(UIBlurEffectStyleDark)]; UIVisualEffectView *effectView = [[UIVisualEffectView alloc] initWithEffect:blur]; //2.设定尺寸 effectView.frame = CGRectMake(50, 150, 300, 150); //3.添加到view中 [self.view addSubview:effectView]; UILabel *label = [[UILabel alloc] initWithFrame:effectView.bounds]; label.font = [UIFont systemFontOfSize:40.0f]; label.text = @"极客学院"; label.textColor = [UIColor redColor]; label.textAlignment = NSTextAlignmentCenter; //添加到effectView的contentView中子视图label并没有模糊 //[effectView.contentView addSubview:label]; //模糊子视图label UIVibrancyEffect *brancy = [UIVibrancyEffect effectForBlurEffect:(UIBlurEffect *)effectView.effect]; UIVisualEffectView *subEffectView = [[UIVisualEffectView alloc] initWithEffect:brancy]; subEffectView.frame = effectView.bounds; [effectView.contentView addSubview:subEffectView]; [subEffectView.contentView addSubview:label]; ``` 参考整体项目[Demo]()