GPUImage是一个基于GPU图像和视频处理的开源iOS框架,提供各种各样的图像处理滤镜,并且支持照相机和摄像机的实时滤镜。
使用GPUImage处理图片比CoreImage更简单,只需要将过滤器赋给图片对象即可,不需要考虑context或者设备等其他问题。
GPUImage是现在做滤镜最主流的开源框架,没有之一。作者BradLarson基于openGL对图片处理单元进行封装,提供出GPUImageFilter基类,配合shader,常用滤镜都拿下不是问题。
我们通常使用cocoa pods导入GPUImage框架
一、GPUImage基本概念
GPUImage中的有几个概念:
⁃ output,输出源
⁃ intput,输入源
⁃ filter,滤镜
一个完整的滤镜处理流程是: output+X+input,X就是滤镜组(1+个滤镜)。
GPUImage为了方便,新版本中提供了GPUImageFilterPipeline(滤镜管道) 这个东西,方便用户使用多个滤镜组合,不用担心前后的链式逻辑。
GPUImage将图片滤镜处理和动态滤镜分开了
1、动态滤镜是按照滤镜处理流程是: output+X+input。
2、图片处理却是以(output+filter)*X + input这种逻辑。
二、输入源
输入源作为响应链的起点。这些基础类会把图像作为纹理,传给OpenGL ES处理,然后把纹理传递给响应链的下一个对象。
GPUImage的四大输入基础类
GPUImageVideoCamera 摄像头-视频流
GPUImageStillCamera 摄像头-照相
GPUImagePicture 图片
GPUImageMovie 视频
三、输出源
GPUImageFramebuffer就是用来管理纹理缓存的格式与读写帧缓存的buffer。
三、filter,滤镜
GPUImageFilter就是用来接收源图像,通过自定义的顶点、片元着色器来渲染新的图像,并在绘制完成后通知响应链的下一个对象。
详细介绍参考http://www.jianshu.com/nb/4268718