iOSCoreImage/图片模糊处理(一) - 新闻资讯 - 云南小程序开发|云南软件开发|云南网站建设-昆明葵宇信息科技有限公司

159-8711-8523

云南网建设/小程序开发/软件开发

知识

不管是网站,软件还是小程序,都要直接或间接能为您产生价值,我们在追求其视觉表现的同时,更侧重于功能的便捷,营销的便利,运营的高效,让网站成为营销工具,让软件能切实提升企业内部管理水平和效率。优秀的程序为后期升级提供便捷的支持!

您当前位置>首页 » 新闻资讯 » 技术分享 >

iOSCoreImage/图片模糊处理(一)

发表时间:2020-11-5

发布人:葵宇科技

浏览次数:33


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>


多么便可能了。


相关案例查看更多