今天這裏要介紹的是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相關的文件夾內,你們能夠找一找。