在涉及到圖片的應用中庙楚,基本上都會加入圖片濾鏡的相關功能。
IOS自身也自帶了功能強大的濾鏡相關的API趴樱,具體希望了解的朋友可以查詢一下蘋果的文檔馒闷。
今天這里要介紹的是lookup table(顏色查找表),簡而言之就是通過將每一個原始的顏色進行轉換之后成為一個新的顏色叁征。
打一個比方纳账,比如原始顏色是紅色(r:255,g:0捺疼,b:0)疏虫,進行轉換后變?yōu)榫G色(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進行處理的濾鏡函數(shù)GPUImageLookupFilter,使用這個函數(shù)就可以直接對圖片進行濾鏡添加操作了婿滓。
//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相關的文件夾內卿吐,大家可以找一找旁舰。