介绍
GPUImage
是一个开源的基于GPU
的图片或视频的处理框架,其本身内置了近120
多种场景的滤镜效果,并且支持照相机和摄像机的实时滤镜,并且能够自定义图像滤镜。
基本概念
GPUImage
是采用链式方法处理画面的,通过addTarget
方法添加对象到链中,处理完一个target
,就会把上一个环节处理的图像数据传递到下一个target
处理,成为GPUImage
处理链。
GPUImage的四大输入基础类,都可以作为响应链的起点,这些基础类会把图像作为纹理传给OpenGL ES
处理,然后把纹理传递给响应链的下一个target
对象。
source:
GPUImageVideoCamera:用于实时拍摄视频
GPUImageStillCamera:用于实时拍摄照片
GPUImagePicture:用于处理已经拍摄好的图片
GPUImageMovie:用于处理已经拍摄好的视频
filter:
GPUImageFilter
类或者子类,这个类继承自GPUImageOutput
,遵循GPUImageInput
协议,既可以流进数据,又可以流出GPUImage
的final target
:GPUImageView
、GPUImageMovieWriter
最终输入目标,显示图片或视频。
导入
GPUImage
开源库并不像其他的开源库那样,拖进你的工程就可以用,需要添加依赖关系。
下载完成后,找到
framework
文件夹,然后删除GPUImageMac.xcodeproj
文件,再进入Source
文件夹,删除Mac
文件夹(这一步不做的话,即使导入成功,编译也会出错,当时走了不少弯路)-
将
framework
文件夹下的GPUImage.xcodeproj
文件拖入到项目里,应该是这样的
-
在项目根目录里新建
GPUImage
文件夹,把之前处理过的framework
文件夹复制进GPUImage
文件夹下。
-
在项目的
Targets
依赖设置里添加GPUImage
作为Target Dependencies
-
在
Build Phases
的Link Binary With Libraries
下,把libGPUImage.a
加进去。
然后添加下面这些系统的framework:
CoreMedia、CoreVideo、OpenGLES、AVFoundation、QuartzCore
(不添加也不影响)-
添加头文件路径:
Build Settings -> Header Search Paths
添加GPUImage的路径,前面提到,在项目的根目录下创建了一个GPUImage
文件夹,framework
在该文件夹下,所以添加的路径为GPUImage/framework
。注意,路径需要选择recursive
。
在
Build sSetting
里面,Other Linker Flags
里面添加-fobjc-arc -ObjC
这两项最后,在需要的文件里引入头文件
#import "GPUImage.h"
即可。