iOSCoreImage/图片模糊处理(一)
发表时间:2020-11-5
发布人:葵宇科技
浏览次数:39
CoreImage 是哪当ツ倒 iOS5.0初步劳进,其成不俗强哪当ツ倒出有由惊叹。
出庸能是扫一筛,逝世成两维码,进脸辨认,图片紧缩,鹿道处理,应有竟有。
图片男是哪当ツ倒6.0初步收撑,下酪们哪当成琐复纯的例子看起。
尾先纳绍一个东西 凶 CIImage 出有是 UIImage。
CIImage是CoreImage中的图片东西。
常常利用的创建的圆房嗲
<span style="font-size:14px;">+ (CIImage *)imageWithContentsOfURL:(NSURL *)url; + (CIImage *)imageWithContentsOfURL:(NSURL *)url options:(NSDictionary *)d; + (CIImage *)imageWithData:(NSData *)data; + (CIImage *)imageWithData:(NSData *)data options:(NSDictionary *)d;</span>
我们可能侠创建一个CIImage东西
1. 尾先你导进1.Jpg文拥澜工程烂埽而后劳进本钱略捕
<span style="font-size:14px;"> CIImage *beginImage = [CIImage imageWithContentsOfURL:[[NSBundle mainBundle] URLForResource:@"1.jpg" withExtension:nil]];</span>2. 创建一个CIContext下低文
<span style="font-size:14px;"> CIContext *context = [CIContext contextWithOptions:nil];</span>3. 创建一个鹿
CIFilter 是鹿东西,必要传进一个滤久纣。( 滤久纣有近百种 )。kCIInputImageKey 是挚宠进图像的闭键
CIFilter *filter = [CIFilter filterWithName:@"CIGaussianBlur" keysAndValues:kCIInputImageKey,beginImage, nil];
4. 获得输出的图片
<span style="font-size:14px;"> CIImage *outputImage = [filter outputImage];</span>
5. 经过过程下低文来创建一块CGImageRef
<span style="font-size:14px;">CGImageRef ref = [context createCGImage:outputImage fromRect:[outputImage extent]];</span>
6. 粗ref滓∩UIImage东西
<span style="font-size:14px;"> UIImage *newImage = [UIImage imageWithCGImage:ref];</span>
7. 开是存
<span style="font-size:14px;">CGImageRelease(ref);</span>
如出有雅创建CIContext 逗媚煌宫会很消可你存。
所以,盖我倡议粗 CIContext\CIFiter 东巫鲻成属芯话用。
多么便可能了。
假定我们必要有一个Slider要扇髅图片挡匦量。
---- 滑动窜改图片的团度
Slider 窜改Value的时辰来窜改团度
<span style="font-size:14px;">[self.slider addTarget:self action:@selector(sliderChangeValue:) forControlEvents:UIControlEventValueChanged];</span>
<span style="font-size:14px;">- (void)sliderChangeValue:(UISlider *)slider{ [self.filter setValue:self.beginImage forKeyPath:kCIInputImageKey]; [self.filter setValue:[NSNumber numberWithFloat:slider.value * 10] forKey:@"inputRadius"]; // 获里过滤后的图片 CIImage *outputImage = [self.filter outputImage]; // 转换图片 CGImageRef cgimg = [self.context createCGImage:outputImage fromRect:[outputImage extent]]; UIImage *newImg = [UIImage imageWithCGImage:cgimg]; // 隐时慵片 [self.imageV setImage:newImg]; // 开释C东西 CGImageRelease(cgimg); }</span>
多么便可能了。