iOS GPUImage 的使用《轉》

《原文地址

GPUImage是現在做濾鏡最主流的開源框架,沒有之一。作者BradLarson基于openGL對圖片處理單元進行封裝,提供出GPUImageFilter基類,配合shader,常用濾鏡都拿下不是問題。

一、安裝

(1):首先下載GPUImage ?https://github.com/BradLarson/GPUImage

(2):解壓后,在framework 目錄下,打開 GPUImage.xcodeproj ?工程

(3)因為 GPUImage是一個開源的庫 ,所以需要自己生成 靜態庫(以前的笨方法把整個工程加入項目,這在使用中出現了很不不必要的麻煩)

(4):運行該工程(生成 用于真機和模擬器的lib)

(5)點擊Products下的 libGPUImage.a,右鍵, show in finder 將 兩個lib 合并(方法,詳見關于 創建靜態庫的博文)

(6) 將 GPUImage.h文件中包含的頭文件全部 提取到 header文件中

二 、創建用于使用GPUImage的項目

1.創建工程

2.將 header文件夾和libGPUImage.a加入到項目中

目錄結構為:

3.編寫測試代碼

@implementationViewController

- (void)viewDidLoad

{

[superviewDidLoad];

UIImage* inputImage = [UIImageimageNamed:@"k"];

//使用黑白素描濾鏡

GPUImageSketchFilter*disFilter = [[GPUImageSketchFilteralloc]init];

//設置要渲染的區域

[disFilterforceProcessingAtSize:inputImage.size];

[disFilteruseNextFrameForImageCapture];

//獲取數據源

GPUImagePicture*stillImageSource = [[GPUImagePicturealloc]initWithImage:inputImage];

//添加上濾鏡

[stillImageSourceaddTarget:disFilter];

//開始渲染

[stillImageSourceprocessImage];

//獲取渲染后的圖片

UIImage*newImage = [disFilterimageFromCurrentFramebuffer];

//加載出來

UIImageView*imageView = [[UIImageViewalloc]initWithImage:newImage];

imageView.frame=CGRectMake(50,50,inputImage.size.width,inputImage.size.height);

[self.viewaddSubview:imageView];

}

4.運行明目

原圖

經過濾鏡處理后的圖片效果。

三、GPUImage中的幾個概念

? output為輸出源

? intput為輸入源

? filter為濾鏡

28#import"GPUImageBrightnessFilter.h"http://亮度29#import"GPUImageExposureFilter.h"http://曝光30#import"GPUImageContrastFilter.h"http://對比度31#import"GPUImageSaturationFilter.h"http://飽和度32#import"GPUImageGammaFilter.h"http://伽馬線33#import"GPUImageColorInvertFilter.h"http://反色34#import"GPUImageSepiaFilter.h"http://褐色(懷舊)35#import"GPUImageLevelsFilter.h"http://色階36#import"GPUImageGrayscaleFilter.h"http://灰度37#import"GPUImageHistogramFilter.h"http://色彩直方圖,顯示在圖片上38#import"GPUImageHistogramGenerator.h"http://色彩直方圖39#import"GPUImageRGBFilter.h"http://RGB40#import"GPUImageToneCurveFilter.h"http://色調曲線41#import"GPUImageMonochromeFilter.h"http://單色42#import"GPUImageOpacityFilter.h"http://不透明度43#import"GPUImageHighlightShadowFilter.h"http://提亮陰影44#import"GPUImageFalseColorFilter.h"http://色彩替換(替換亮部和暗部色彩)45#import"GPUImageHueFilter.h"http://色度46#import"GPUImageChromaKeyFilter.h"http://色度鍵47#import"GPUImageWhiteBalanceFilter.h"http://白平橫48#import"GPUImageAverageColor.h"http://像素平均色值49#import"GPUImageSolidColorGenerator.h"http://純色50#import"GPUImageLuminosity.h"http://亮度平均51#import"GPUImageAverageLuminanceThresholdFilter.h"http://像素色值亮度平均,圖像黑白(有類似漫畫效果)5253#import"GPUImageLookupFilter.h"http://lookup 色彩調整54#import"GPUImageAmatorkaFilter.h"http://Amatorka lookup55#import"GPUImageMissEtikateFilter.h"http://MissEtikate lookup56#import"GPUImageSoftEleganceFilter.h"http://SoftElegance lookup61#pragmamark - 圖像處理 Handle Image6263#import"GPUImageCrosshairGenerator.h"http://十字64#import"GPUImageLineGenerator.h"http://線條6566#import"GPUImageTransformFilter.h"http://形狀變化67#import"GPUImageCropFilter.h"http://剪裁68#import"GPUImageSharpenFilter.h"http://銳化69#import"GPUImageUnsharpMaskFilter.h"http://反遮罩銳化7071#import"GPUImageFastBlurFilter.h"http://模糊72#import"GPUImageGaussianBlurFilter.h"http://高斯模糊73#import"GPUImageGaussianSelectiveBlurFilter.h"http://高斯模糊,選擇部分清晰74#import"GPUImageBoxBlurFilter.h"http://盒狀模糊75#import"GPUImageTiltShiftFilter.h"http://條紋模糊,中間清晰,上下兩端模糊76#import"GPUImageMedianFilter.h"http://中間值,有種稍微模糊邊緣的效果77#import"GPUImageBilateralFilter.h"http://雙邊模糊78#import"GPUImageErosionFilter.h"http://侵蝕邊緣模糊,變黑白79#import"GPUImageRGBErosionFilter.h"http://RGB侵蝕邊緣模糊,有色彩80#import"GPUImageDilationFilter.h"http://擴展邊緣模糊,變黑白81#import"GPUImageRGBDilationFilter.h"http://RGB擴展邊緣模糊,有色彩82#import"GPUImageOpeningFilter.h"http://黑白色調模糊83#import"GPUImageRGBOpeningFilter.h"http://彩色模糊84#import"GPUImageClosingFilter.h"http://黑白色調模糊,暗色會被提亮85#import"GPUImageRGBClosingFilter.h"http://彩色模糊,暗色會被提亮86#import"GPUImageLanczosResamplingFilter.h"http://Lanczos重取樣,模糊效果87#import"GPUImageNonMaximumSuppressionFilter.h"http://非最大抑制,只顯示亮度最高的像素,其他為黑88#import"GPUImageThresholdedNonMaximumSuppressionFilter.h"http://與上相比,像素丟失更多8990#import"GPUImageSobelEdgeDetectionFilter.h"http://Sobel邊緣檢測算法(白邊,黑內容,有點漫畫的反色效果)91#import"GPUImageCannyEdgeDetectionFilter.h"http://Canny邊緣檢測算法(比上更強烈的黑白對比度)92#import"GPUImageThresholdEdgeDetectionFilter.h"http://閾值邊緣檢測(效果與上差別不大)93#import"GPUImagePrewittEdgeDetectionFilter.h"http://普瑞維特(Prewitt)邊緣檢測(效果與Sobel差不多,貌似更平滑)94#import"GPUImageXYDerivativeFilter.h"http://XYDerivative邊緣檢測,畫面以藍色為主,綠色為邊緣,帶彩色95#import"GPUImageHarrisCornerDetectionFilter.h"http://Harris角點檢測,會有綠色小十字顯示在圖片角點處96#import"GPUImageNobleCornerDetectionFilter.h"http://Noble角點檢測,檢測點更多97#import"GPUImageShiTomasiFeatureDetectionFilter.h"http://ShiTomasi角點檢測,與上差別不大98#import"GPUImageMotionDetector.h"http://動作檢測99#import"GPUImageHoughTransformLineDetector.h"http://線條檢測100#import"GPUImageParallelCoordinateLineTransformFilter.h"http://平行線檢測101102#import"GPUImageLocalBinaryPatternFilter.h"http://圖像黑白化,并有大量噪點103104#import"GPUImageLowPassFilter.h"http://用于圖像加亮105#import"GPUImageHighPassFilter.h"http://圖像低于某值時顯示為黑106107108#pragmamark - 視覺效果 Visual Effect109110#import"GPUImageSketchFilter.h"http://素描111#import"GPUImageThresholdSketchFilter.h"http://閥值素描,形成有噪點的素描112#import"GPUImageToonFilter.h"http://卡通效果(黑色粗線描邊)113#import"GPUImageSmoothToonFilter.h"http://相比上面的效果更細膩,上面是粗曠的畫風114#import"GPUImageKuwaharaFilter.h"http://桑原(Kuwahara)濾波,水粉畫的模糊效果;處理時間比較長,慎用115116#import"GPUImageMosaicFilter.h"http://黑白馬賽克117#import"GPUImagePixellateFilter.h"http://像素化118#import"GPUImagePolarPixellateFilter.h"http://同心圓像素化119#import"GPUImageCrosshatchFilter.h"http://交叉線陰影,形成黑白網狀畫面120#import"GPUImageColorPackingFilter.h"http://色彩丟失,模糊(類似監控攝像效果)121122#import"GPUImageVignetteFilter.h"http://暈影,形成黑色圓形邊緣,突出中間圖像的效果123#import"GPUImageSwirlFilter.h"http://漩渦,中間形成卷曲的畫面124#import"GPUImageBulgeDistortionFilter.h"http://凸起失真,魚眼效果125#import"GPUImagePinchDistortionFilter.h"http://收縮失真,凹面鏡126#import"GPUImageStretchDistortionFilter.h"http://伸展失真,哈哈鏡127#import"GPUImageGlassSphereFilter.h"http://水晶球效果128#import"GPUImageSphereRefractionFilter.h"http://球形折射,圖形倒立129130#import"GPUImagePosterizeFilter.h"http://色調分離,形成噪點效果131#import"GPUImageCGAColorspaceFilter.h"http://CGA色彩濾鏡,形成黑、淺藍、紫色塊的畫面132#import"GPUImagePerlinNoiseFilter.h"http://柏林噪點,花邊噪點133#import"GPUImage3x3ConvolutionFilter.h"http://3x3卷積,高亮大色塊變黑,加亮邊緣、線條等134#import"GPUImageEmbossFilter.h"http://浮雕效果,帶有點3d的感覺135#import"GPUImagePolkaDotFilter.h"http://像素圓點花樣136#import"GPUImageHalftoneFilter.h"http://點染,圖像黑白化,由黑點構成原圖的大致圖形137138139#pragmamark - 混合模式 Blend140141#import"GPUImageMultiplyBlendFilter.h"http://通常用于創建陰影和深度效果142#import"GPUImageNormalBlendFilter.h"http://正常143#import"GPUImageAlphaBlendFilter.h"http://透明混合,通常用于在背景上應用前景的透明度144#import"GPUImageDissolveBlendFilter.h"http://溶解145#import"GPUImageOverlayBlendFilter.h"http://疊加,通常用于創建陰影效果146#import"GPUImageDarkenBlendFilter.h"http://加深混合,通常用于重疊類型147#import"GPUImageLightenBlendFilter.h"http://減淡混合,通常用于重疊類型148#import"GPUImageSourceOverBlendFilter.h"http://源混合149#import"GPUImageColorBurnBlendFilter.h"http://色彩加深混合150#import"GPUImageColorDodgeBlendFilter.h"http://色彩減淡混合151#import"GPUImageScreenBlendFilter.h"http://屏幕包裹,通常用于創建亮點和鏡頭眩光152#import"GPUImageExclusionBlendFilter.h"http://排除混合153#import"GPUImageDifferenceBlendFilter.h"http://差異混合,通常用于創建更多變動的顏色154#import"GPUImageSubtractBlendFilter.h"http://差值混合,通常用于創建兩個圖像之間的動畫變暗模糊效果155#import"GPUImageHardLightBlendFilter.h"http://強光混合,通常用于創建陰影效果156#import"GPUImageSoftLightBlendFilter.h"http://柔光混合157#import"GPUImageChromaKeyBlendFilter.h"http://色度鍵混合158#import"GPUImageMaskFilter.h"http://遮罩混合159#import"GPUImageHazeFilter.h"http://朦朧加暗160#import"GPUImageLuminanceThresholdFilter.h"http://亮度閾161#import"GPUImageAdaptiveThresholdFilter.h"http://自適應閾值162#import"GPUImageAddBlendFilter.h"http://通常用于創建兩個圖像之間的動畫變亮模糊效果163#import"GPUImageDivideBlendFilter.h"http://通常用于創建兩個圖像之間的動畫變暗模糊效果164165166#pragmamark - 尚不清楚167#import"GPUImageJFAVoroniFilter.h"168#import"GPUImageVoroniConsumerFilter.h"

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,563評論 6 544
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,694評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,672評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,965評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,690評論 6 413
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 56,019評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,013評論 3 449
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,188評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,718評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,438評論 3 360
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,667評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,149評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,845評論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,252評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,590評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,384評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,635評論 2 380

推薦閱讀更多精彩內容