核心映像简介

以上是苹果官方文档中对Core Image的介绍,大意是Core Image是一种为静止图像和视频提供处理和分析的技术。它可以使用GPU/CPU处理图像。Core Image为用户提供了简洁的API,隐藏了图像处理中复杂的底层内容。你可以在不了解OpenGL、OpenGES甚至GCD的情况下使用它,它已经帮你处理这些复杂的内容了。

在iOS中,核心图像框架(Core Image framework)是iOS5在iOS平台上新加入的图像处理框架,为基于像素的图像操作和分析提供了强大高效的图像处理方法,并内置了许多强大的滤镜(目前数量超过180)。这些滤镜提供了多种效果,它们可以通过滤镜链进行叠加,形成强大的自定义效果。

过滤器是一个有许多输入和输出并执行一些更改的对象。例如,模糊滤镜可能需要输入图像和模糊半径来产生适当的模糊输出图像。

过滤器链是过滤器链接在一起的网络,因此一个过滤器的输出可以是另一个过滤器的输入。这样就可以达到精心制作的效果。

高斯模糊效果示例:

效果如图所示:

核心图像框架中有很多滤镜,那么我们怎么知道有哪些滤镜呢?怎么知道每个滤镜的具体用法?我们可以从CIFilter的头文件中找到以kCICategory开头的过滤器分类,然后通过CIFilter提供的class方法得到相应分类下的所有过滤器。以kCICategoryBlur为例:

上面的滤镜打印出来的字符串是各种不同的滤镜效果,然后你可以通过查看滤镜的属性来理解它的用法。以高斯模糊为例:

属性描述:

CIAttributeFilterAvailable_Mac:支持的最低Mac系统版本。

CIAttributeFilterAvailable _ iOS:iOS系统支持的最低版本。

CIAttributeFilterCategories:效果所属的类别。

CIAttributeFilterDisplayName:效果显示的名称。

CIAttributeFilterName:效果名称

Ciattributereference文档:效果文档的地址

InputImage:输入图像属性描述(CIImage对象)。

InputRadius:输入模糊半径属性(NSNumber对象)的描述。默认模糊度为10,最低为0,最高为100。

iOS平台下创建CIContext的方法有很多种,常用的有两种。

注意:

使用基于GPU的CIContext会获得更好的性能,但跨应用使用时,会自动降为基于CPU。比如你在进入相册时使用UIImagePickerControllerDelegate的代理方法中的CIContext对象处理图像,系统会把这个任务交给CPU。