一、介绍
GPUImage
是一个基于OpenGL ES 2.0
的开源的图像处理库,作者是Brad Larson。GPUImage
将OpenGL ES
封装为简洁的Objective-C
或Swift
接口,可以用来给图像、实时相机视频、电影等添加滤镜。
二、使用
1.导入GPUImage两种方式
a.使用 cocopods
导入
platform :ios, '9.0'
target 'GPUImageDemo' do
pod 'GPUImage'
end
b.手动导入
(1).首先下载GPUImage,下载地址
(2).解压后,在framework 目录下,打开GPUImage.xcodeproj
工程
(3).因为 GPUImage是一个开源的库 ,所以需要自己生成 静态库(以前的笨方法把整个工程加入项目,这在使用中出现了很不不必要的麻烦)
(4).运行该工程(生成 用于真机和模拟器的lib)
(5).点击Products下的 libGPUImage.a,右键, show in finder 将 两个lib 合并
(6).将 GPUImage.h文件中包含的头文件全部 提取到 header文件中
2.使用
(1).导入头文件
#import <GPUImageView.h>
#import <GPUImage/GPUImage.h>
(2).使用滤镜
UIImage *inputImage =[UIImage imageNamed:@"lzl"];
// 创建滤镜
GPUImageVignetteFilter *disFilter = [[GPUImageVignetteFilter alloc] init];
//设置要渲染的区域
[self.filter forceProcessingAtSize:inputImage.size];
[self.filter useNextFrameForImageCapture];
//获取数据源
GPUImagePicture *stillImageSource = [[GPUImagePicture alloc]initWithImage:inputImage];
//添加上滤镜
[stillImageSource addTarget:self.filter];
//开始渲染
[stillImageSource processImage];
//获取渲染后的图片
UIImage *newImage = [self.filter imageFromCurrentFramebuffer];
//加载出来
UIImageView *imageView = [[UIImageView alloc] initWithImage:newImage];
imageView.frame = CGRectMake(50,0,250 ,250);
[self.view addSubview:imageView];
(3).效果
三、概念解析
output
为输出源intput
为输入源filter
为滤镜
以下为滤镜,添加了部分注释
// Filters
#import "GPUImageFilter.h"
#import "GPUImageTwoInputFilter.h"
#import "GPUImagePixell