CoreImage(一)简单介绍
CoreImage框架是iOS处理图像的框架,主要用处可以给图片添加滤镜效果和图像识别功能(人脸、条形码等等)
主要类
CIImage
CIImage是CoreImage框架中最基本代表图像的对象,他不仅包含元图像数据,还包含作用在原图像上的滤镜链。这里我想特别强调的是CIImage和其他图像是不同的,在CIImage被CIContext渲染出来之前,他是依赖于滤镜链的,滤镜是不会更改CIImage中的图像数据。
//有类方法和实例方法
imageWithCGImage:
imageWithContentsOfURL:
imageWithCVImageBuffer:
imageWithData:
CIContext
上下文对象用来渲染CIImage,将作用在CIImage上的滤镜链应用到原始的图片数据中。CIContext可以是基于CPU的,也可以是基于GPU的,这两种渲染的区别是:使用CPU渲染的IOS会采用GCD来对图像进行渲染,这保证了CPU渲染在大部分情况下更可靠,比CPU渲染更容易使用,他可以在后台实现渲染过程;而GPU渲染方式使用OpenGL ES2.0来渲染图像,这种方式CPU完全没有负担,应用程序的运行循环不会受到图像渲染的影响,而且他渲染比CPU渲染更快但是GPU渲染无法在后台运行。
// 创建CIContex上下文对象
CIContext *context = [CIContext contextWithOptions:nil];
CGImageRef imgRef = [context createCGImage:outputImg fromRect:outputImg.extent];
UIImage *img = [UIImage imageWithCGImage:imgRef];
CIFilter
CIFilter用来表示CoreImage提供的各种滤镜。滤镜使用键-值来设置输入值,一旦这些值设置好,CIFilter就可以用来生成新的CIImage输出图像了。
API里提供了100多种滤镜可用,每种滤镜又有很多属性进行设置,二维码、条形码也是通过这个形成,我们 可以通过代码获取都有哪些滤镜和属性设置。
详细介绍和实际应用:CoreImage(二)CIFilter滤镜效果使用
CIFilter *filter = [CIFilter filterWithName:@"filterName"];
[filter setValue:image forKey:kCIInputImageKey];
[filter setDefaults];
CIImage* resultImage = filter.outputImage;
CIDetector
CIDetector用来进行特征识别的类,可用来实现人脸识别、扫描二维码等功能。
详细介绍和实际应用:CoreImage(二)CIFilter滤镜效果使用