使用Core Image 滤镜

  CoreImage 是一个功能强大的框架,通过这个框架很容易对图像进行处理,比如模糊,色彩,像素等,使用CoreImage主要和CIContent,CIImage,CIFilter打交道。

 Core Image三个核心API

CIContext. 所有图像处理都是在一个CIContext 中完成的,这很像是一个Core Image处理器或是OpenGL的上下文。

CIImage. 这个类保存图像数据。它可以从UIImage、图像文件、或者是像素数据中构造出来。

CIFilter. 滤镜类包含一个字典结构,对各种滤镜定义了属于他们各自的属性。滤镜有很多种,比如鲜艳程度滤镜,色彩反转滤镜,剪裁滤镜等等。

了解了以上三个api我们就可以使用了,使用的过程大致如下:

1.创建CIContent对象我们需要使用这个对象将CIImage转为CGImageRef,这个对象可以重复使用,当我们使用CIContent时尽量重复使用,避免频繁创建造成性能问题。

创建方法:

创建CIContent

2.过滤器,CIFilter一般通过filterWithName方法获取,参数为过滤器名字,每个过滤器有自己唯一的属性,通过设置好这些属性对图像进行处理。

3.创建CIImage,它代表需要处理的图像,有多个种创建方法,具体可点进头文件查看。

4.通过[filter outputImage]获得处理过后的CIImage,然后通过CIContent createCGImage: fromRect:方法得到CGImageRef从而得到UIImage,当然我们也可以通过UImage的分类imageWithCIImage得到,这个方法每次都创建了CIContent,并没有对CIContent的重复使用,频繁使用可能影响性能。

下面列举常用的几个滤镜:

色彩控制滤镜-CIColorControls

其中imageFromCIImage:Content如下

该方法主要实现将CIImage转换为UIImage。

反转颜色滤镜-CIColorInvert

棕色滤镜-CISepiaTone

模糊滤镜-CIGaussianBlur

像素滤镜-CIPixellate

人脸检测

featuresWithImage: content:方法如下:

获得左眼/右眼/嘴部位置,通过该方法可以获取脸部的左眼,右眼,嘴部的位置

眼 

FacePartType 为枚举类型定义如下:

Core Image定义了上百种过滤器,但是也只有一部分能使用在ios上,可以通过以下方法获得内设的过滤器。

总结:CoreImage提供了简单的方法对图像进行处理,虽然方法简单,功能却很强大。就是有点不好记住,比如过滤器的名字,太多了不好记,至于过滤器要设置的属性,每个过滤器有自己的属性,记不住属性名,可以通过po [filter attributes]查看过滤器的属性信息。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言:Core Image是一个强大的框架,可让您轻松地将过滤器应用于图像。您可以获得各种各样的效果,如修改活力,...
    Dwyane_Coding阅读 1,187评论 0 23
  • Core Image是一个强大的框架,它能够让你轻松地对图像进行过滤。你能够通过修改图像的饱和度、色调或曝光率来获...
    木易林1阅读 1,157评论 0 1
  • 老骥伏枥,志在千里 前记 最近一直在研究图像处理方面,既上一篇iOS Quart2D绘图之UIImage简单使用后...
    半笑半醉間阅读 4,439评论 0 14
  • ​1 爱慕虚荣,不择手段 为了金钱抛夫妻子的女人还少吗?当然你刚认识她的时候并不知道她会这样做,可是一个人是不是过...
    库伯科技派阅读 537评论 0 0
  • 砥砺前行,不忘初心 郑州航空港区君赵小学 张效 早在孩提时代,从第一次上学起,接触老师这一职业,心中便对该行当燃起...
    张莞尔阅读 478评论 0 0