在iOS中开发过程中,如果你想对图片进行简单的处理,那么很简单,苹果帮我们封装了一套简单易用的API——CIFilter。
使用CIFilter你可以做到:调节图片亮度、对比度、饱和度等图片基本的操作;使用模糊、锐化、高反差等对图片进行滤镜处理。
一、基本概念
1、CIFilterCategory
图片处理的方式方法种类繁多,在CIFiler中是如何对这么多的图片处理方式进行归类的呢?苹果采用的是Category的形式。比如上文提到的图片亮度、对比度、饱和度等颜色处理都属于CICategoryColorAdjustment,图片模糊处理对应CICategoryBlur,图片锐化则对应CICategorySharpen。
2.CIFilterName
在图片处理中,除了大的种类划分之外,每一种类还有对应的不同处理方式,比如CICategoryBlur可以分为CIBoxblur、CIDiscblur、
CIGaussianBlur、CIMotionBlur、CIZoomBlur等。
3.attributes
要想对图片进行某一种处理,必须要调节对应属性的属性值,对于CIFilter来讲也就是filter对象的attributes。每一个CIFiler对象都包含attributes属性,并且其中相应的值在一定的区间内是可变动的,以此来作为图片对应属性处理的参数。
4.inputImage && outputImage
使用CIFilter对图片进行处理,CIFliter对象相当于设置了一系列参数的过滤器,将原始图片输入,输出使用相应参数处理后的图片。
二、使用CIFiler
1.准备工作
如果你使用较早版本的xcode,你可能需要导入一个动态库framework
在xcode7等新版本中,你可以直接导入CIFilter.h头文件进行下一步的开发。
2.创建一个CIFilter对象,并修改一种属性值,输出UIImage
由于在日常的iOS开发中,我们常用的图片对象是UIImage,它是属于UIKit.framework的,而CIFilter是属于Coreimage.framework。他们之间是不能直接进行转化的,这就需要借助中间层——CoreGraphics.framework。
UIImage *inputImageUI = [UIImage imageNamed:@"1"];
CIImage *inputImageCI = [CIImage imageWithCGImage:inputImageUI.CGImage];
CIFilter *filte