今天这里要介绍的是lookup table(颜色查找表),简而言之就是经过将每个原始的颜色进行转换以后成为一个新的颜色。app
打一个比方,好比原始颜色是红色(r:255,g:0,b:0),进行转换后变为绿色(r:0,g:255,b:0),之后全部是红色的地方都会被自动转换为绿色。函数
而颜色查找表就是将全部的颜色进行一次(矩阵)转换,而不少的滤镜功能就是提供了这么一个转换的矩阵,在原始色彩的基础上进行颜色的转换。spa
然而IOS自带的图像处理API中并无提供颜色查找表相关的内容。即便如此,善解人意的GPUImage的大大们给咱们提供了一个相关的接口,今天就来简单的介绍一下用法。.net
1 图片添加滤镜效果
资源:一张图片(随意),photoshopblog
a)在photoshop中载入原始图片接口

b)调整photoshop中的调整面板,对图像进行调整,并达到满意的效果。图片


c)在达到满意的效果以后,对original lookup table(原始颜色查找表)进行一次相同的调整操做资源


d)将调整后获得的lookup table另存为NewLookupTable.png开发
2 代码中引用lookup table
GPUImage是一个至关出名的第三方图像处理库,这里就不对这个库进行介绍了。get
GPUImage中有一个专门针对lookup table进行处理的滤镜函数GPUImageLookupFilter,使用这个函数就能够直接对图片进行滤镜添加操做了。
//originalImg是你但愿添加滤镜的原始图片
- (UIImage *)applyFIlter:(UIImage *)originalImg {
UIImage *inputImage =originalImg;
UIImage *outputImage = nil;
GPUImagePicture *stillImageSource = [[GPUImagePicture alloc] initWithImage:inputImage];
//添加滤镜
GPUImageLookupFilter *lookUpFilter = [[GPUImageLookupFilter alloc] init];
//导入以前保存的NewLookupTable.png文件
GPUImagePicture *lookupImg = [[GPUImagePicturealloc] initWithImage:[UIImageimageNamed: @“NewLookupTable.png”]];
[lookupImg addTarget:lookUpFilteratTextureLocation:1];
[stillImageSource addTarget:lookUpFilteratTextureLocation:0];
[lookUpFilter useNextFrameForImageCapture];
if([lookupImg processImageWithCompletionHandler:nil] && [stillImageSource processImageWithCompletionHandler:nil]) {
outputImage= [lookUpFilterimageFromCurrentFramebuffer];
}
return outputImage;
}
就这样滤镜就能够添加成功了,很简单把,哈哈。
对了哈,GPUImage这个库里面会有一张lookup table的图片的,在GPUImageLookupFilter相关的文件夹内,你们能够找一找。