【IOS学习】Core Image 框架学习笔记,以及demo

Core Image 是 IOS 的图片处理框架,有使用方便、易于管理,性能优异的特点。

用途

  • 在照片、视频处理,把滤镜作为最后一步,添加水印

  • 给照相机提供实时效果

  • 面部检测,自动滤镜增益,图片分析算法

  • 更多


理解Core Image 框架


CIImage

带便图像的对象

CIFilter

表示滤镜,使用key-value coding设置输入值,滤镜强度和输入的CIImage 包含了一个对输入图像的引用以及需要应用于数据的滤镜

CIContext

用于渲染CIImage,当一个图片被渲染,作用于图片的滤镜链会被应用到原始的图像数据上。 CIContext可以是基于CPU的,输出为CGImageRef,也可以是基与GPU的,开发者可通过Open ES 2.0 画出来

CIDetector

CIDetector用于分析CIImage,以得到CIFeature,每个CIDetector都要用一个探测器类型(NSString)来初始化。这个类型用于告诉探测器要找什么特征

CIFeatureCIFaceFeature

当一个CIDetector 分析一个图像,返回值是一个根据探测器类型探测到的CIFeature数组。每一个CIFaceFeature都包含了一个面部的CGRect引用,以及检测到的面孔的左眼、右眼、嘴部对应的CGpoint


Core Image 处理图片的工作流程


  • 创建新的CIImage
  • 创建新的CIFilter,通过键-值编码设置输入值,一定要给inputImage加入一个值,这个属性是图像数据源
  • 从CIFilter中生成输出图片。通过访问CIFilter的outputImage属性,可以得到输出图像,这是一个新的CIImage对象,包含了原始图片的数据以及一个滤镜链。 在得到输出图像后,可以使用滤镜来渲染出最终的效果图像。也可以将其作为一个新滤镜的输入图像,这样会产生出一条滤镜链
  • 用CIContext 渲染CIImage 对象,这个CIContext 可以是基于CPU的,输出为CGImageRef,通过 LibDispatch(GCD)渲染 ,更加可靠,也更加易用。也可以是基于GPU的,开发者可通过Open ES 2.0 画出来。使用GPU渲染时CPU没有负担,更好地性能,但无法在后台运行

使用例子

<span style="font-size:12px;">    //添加棕色的滤镜
    CIImage *myCoreImage = [CIImage imageWithCGImage:self.myImageView.image.CGImage options:nil];
   
    // 创建Filter,@"CISepiaTone"这个名字是系统指定的
    CIFilter *sepia = [CIFilter filterWithName:@"CISepiaTone"];
   
    // 设置Filter
    [sepia setValue:myCoreImage forKey:@"inputImage"];
   
    NSNumber *intensity = [NSNumber numberWithFloat:.5f];
    [sepia setValue:intensity forKey:@"inputIntensity"];
   
    // 生成新的 CIImage
    CIImage *outputImage = [sepia outputImage];
   
    // 取出UIImage
    CGImageRef renderImage = [_imageContext createCGImage:outputImage fromRect:[outputImage extent]];
    [self.myImageView setImage:[UIImage imageWithCGImage:renderImage]];</span>

DemoCoreImage 是直接从IOS 核心框架拿过来的。
CoreImageMySelf 是我自己提取的只为实现优化功能的demo
提取的功能模块有,filter的使用、自动优化的使用、脸部检测


Demo 下载地址:https://github.com/caigee/iosdev_sample

下的DemoCoreImage

厚吾http://blog.csdn.net/mangosnow

本文遵循“署名-非商业用途-保持一致”创作公用协议


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值