今天這里要介紹的是lookup table(顏色查找表),簡而言之就是通過將每一個原始的顏色進行轉換之后成為一個新的顏色。
打一個比方,比如原始顏色是紅色(r:255,g:0,b:0),進行轉換后變為綠色(r:0,g:255,b:0),以后所有是紅色的地方都會被自動轉換為綠色。
而顏色查找表就是將所有的顏色進行一次(矩陣)轉換,而很多的濾鏡功能就是提供了這么一個轉換的矩陣,在原始色彩的基礎上進行顏色的轉換。
然而IOS自帶的圖像處理API中並沒有提供顏色查找表相關的內容。即使如此,善解人意的GPUImage的大大們給我們提供了一個相關的接口,今天就來簡單的介紹一下用法。
1 圖片添加濾鏡效果
資源:一張圖片(隨意),photoshop
a)在photoshop中載入原始圖片

b)調整photoshop中的調整面板,對圖像進行調整,並達到滿意的效果。


c)在達到滿意的效果之后,對original lookup table(原始顏色查找表)進行一次相同的調整操作


d)將調整后得到的lookup table另存為NewLookupTable.png
2 代碼中引用lookup table
GPUImage是一個相當出名的第三方圖像處理庫,這里就不對這個庫進行介紹了。
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相關的文件夾內,大家可以找一找。