GPUImage接入
下載GPUImage 地址 : https://github.com/BradLarson/GPUImage
GPUImage不可以直接拖進(jìn)工程里面直接使用,需要做一下配置才能使用
新建一個GPUImageDemo的工程
吧下載到的GPUImage的文件里的framework文件夾復(fù)制到工程的文件夾目錄下
在build phase的Link Binary With Libraries, 把libGPUImage.a加進(jìn)來.
添加下面這些系統(tǒng)framework:
CoreMedia
CoreVideo
OpenGLES
AVFoundation
QuartzCore
再把framework文件夾中的GPUImage.xcodeproj拖進(jìn)工程中的Frameworks中(注意,這是拖到Xcode工程里面的Frameworks),這時,工程中的Build Phases 中的Target Dependencies中可以看到GPUImage,添加

并在Link Binary With Libraries中添加libGPUImage.a
Build settings中 搜索Header Search Paths, 在finder里面找到GPUImage下面的source, 直接將source拖進(jìn)Header Search Paths內(nèi), 并選擇recursive 遞歸調(diào)用

target-build setting里面,other linker flags 里面添加 -fobjc-arc -ObjC 這兩項, 接著就可以直接引入GPUImage.h來使用GPUImage內(nèi)的方法了
簡單實用(補光)
UIImage *image = [UIImage imageNamed:@"IMG_0265.jpg"];
//創(chuàng)建一個亮度的濾鏡
GPUImageBrightnessFilter *passthroughFilter = [[GPUImageBrightnessFilter alloc] init];
passthroughFilter.brightness = 0.5f;
//設(shè)置要渲染的區(qū)域
[passthroughFilter forceProcessingAtSize:image.size];
[passthroughFilter useNextFrameForImageCapture];
//獲取數(shù)據(jù)源
GPUImagePicture *stillImageSource = [[GPUImagePicture alloc] initWithImage:image];
//添加上濾鏡
[stillImageSource addTarget:passthroughFilter];
//開始渲染
[stillImageSource processImage];
//獲取渲染后的圖片
UIImage *nearestNeighborImage = [passthroughFilter imageFromCurrentFramebuffer];
UIImageView *imageView = [[UIImageView alloc] initWithImage:nearestNeighborImage];
imageView.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height/2);
imageView.backgroundColor = [UIColor redColor];
[self.view addSubview:imageView];
//素描濾鏡
UIImage *image = [UIImage imageNamed:@"IMG_0265.jpg"];
//創(chuàng)建黑白素描濾鏡
GPUImageSketchFilter *sketchFilter = [[GPUImageSketchFilter alloc] init];
//設(shè)置要渲染的區(qū)域
[sketchFilter forceProcessingAtSize:image.size];
[sketchFilter useNextFrameForImageCapture];
//獲取數(shù)據(jù)源
GPUImagePicture *stillImageSource = [[GPUImagePicture alloc] initWithImage:image];
//添加上濾鏡
[stillImageSource addTarget:sketchFilter];
//開始渲染
[stillImageSource processImage];
//獲取渲染后的圖片
UIImage *nearestNeighborImage = [sketchFilter imageFromCurrentFramebuffer];
UIImageView *imageView = [[UIImageView alloc] initWithImage:nearestNeighborImage];
imageView.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height/2);
imageView.backgroundColor = [UIColor redColor];
[self.view addSubview:imageView];



使用總結(jié)
使用過程中設(shè)置要渲染的區(qū)域,獲取數(shù)據(jù)源,添加上濾鏡,開始渲染,獲取渲染后的圖片等方式都是一樣的,區(qū)別只是創(chuàng)建的濾鏡不一樣,有些濾鏡創(chuàng)建以后需要設(shè)置一定的參數(shù)。
#pragma mark - 調(diào)整顏色 Handle Color
#import "GPUImageBrightnessFilter.h"? ? ? ? ? ? ? ? //亮度
#import "GPUImageExposureFilter.h"? ? ? ? ? ? ? ? ? //曝光
#import "GPUImageContrastFilter.h"? ? ? ? ? ? ? ? ? //對比度
#import "GPUImageSaturationFilter.h"? ? ? ? ? ? ? ? //飽和度
#import "GPUImageGammaFilter.h"? ? ? ? ? ? ? ? ? ? //伽馬線
#import "GPUImageColorInvertFilter.h"? ? ? ? ? ? ? //反色
#import "GPUImageSepiaFilter.h"? ? ? ? ? ? ? ? ? ? //褐色(懷舊)
#import "GPUImageLevelsFilter.h"? ? ? ? ? ? ? ? ? ? //色階
#import "GPUImageGrayscaleFilter.h"? ? ? ? ? ? ? ? //灰度
#import "GPUImageHistogramFilter.h"? ? ? ? ? ? ? ? //色彩直方圖,顯示在圖片上
#import "GPUImageHistogramGenerator.h"? ? ? ? ? ? ? //色彩直方圖
#import "GPUImageRGBFilter.h"? ? ? ? ? ? ? ? ? ? ? //RGB
#import "GPUImageToneCurveFilter.h"? ? ? ? ? ? ? ? //色調(diào)曲線
#import "GPUImageMonochromeFilter.h"? ? ? ? ? ? ? ? //單色
#import "GPUImageOpacityFilter.h"? ? ? ? ? ? ? ? ? //不透明度
#import "GPUImageHighlightShadowFilter.h"? ? ? ? ? //提亮陰影
#import "GPUImageFalseColorFilter.h"? ? ? ? ? ? ? ? //色彩替換(替換亮部和暗部色彩)
#import "GPUImageHueFilter.h"? ? ? ? ? ? ? ? ? ? ? //色度
#import "GPUImageChromaKeyFilter.h"? ? ? ? ? ? ? ? //色度鍵
#import "GPUImageWhiteBalanceFilter.h"? ? ? ? ? ? ? //白平橫
#import "GPUImageAverageColor.h"? ? ? ? ? ? ? ? ? ? //像素平均色值
#import "GPUImageSolidColorGenerator.h"? ? ? ? ? ? //純色
#import "GPUImageLuminosity.h"? ? ? ? ? ? ? ? ? ? ? //亮度平均
#import "GPUImageAverageLuminanceThresholdFilter.h" //像素色值亮度平均,圖像黑白(有類似漫畫效果)
#import "GPUImageLookupFilter.h"? ? ? ? ? ? ? ? ? ? //lookup 色彩調(diào)整
#import "GPUImageAmatorkaFilter.h"? ? ? ? ? ? ? ? ? //Amatorka lookup
#import "GPUImageMissEtikateFilter.h"? ? ? ? ? ? ? //MissEtikate lookup
#import "GPUImageSoftEleganceFilter.h"? ? ? ? ? ? ? //SoftElegance lookup
#pragma mark - 圖像處理 Handle Image
#import "GPUImageCrosshairGenerator.h"? ? ? ? ? ? ? //十字
#import "GPUImageLineGenerator.h"? ? ? ? ? ? ? ? ? //線條
#import "GPUImageTransformFilter.h"? ? ? ? ? ? ? ? //形狀變化
#import "GPUImageCropFilter.h"? ? ? ? ? ? ? ? ? ? ? //剪裁
#import "GPUImageSharpenFilter.h"? ? ? ? ? ? ? ? ? //銳化
#import "GPUImageUnsharpMaskFilter.h"? ? ? ? ? ? ? //反遮罩銳化
#import "GPUImageFastBlurFilter.h"? ? ? ? ? ? ? ? ? //模糊
#import "GPUImageGaussianBlurFilter.h"? ? ? ? ? ? ? //高斯模糊
#import "GPUImageGaussianSelectiveBlurFilter.h"? ? //高斯模糊,選擇部分清晰
#import "GPUImageBoxBlurFilter.h"? ? ? ? ? ? ? ? ? //盒狀模糊
#import "GPUImageTiltShiftFilter.h"? ? ? ? ? ? ? ? //條紋模糊,中間清晰,上下兩端模糊
#import "GPUImageMedianFilter.h"? ? ? ? ? ? ? ? ? ? //中間值,有種稍微模糊邊緣的效果
#import "GPUImageBilateralFilter.h"? ? ? ? ? ? ? ? //雙邊模糊
#import "GPUImageErosionFilter.h"? ? ? ? ? ? ? ? ? //侵蝕邊緣模糊,變黑白
#import "GPUImageRGBErosionFilter.h"? ? ? ? ? ? ? ? //RGB侵蝕邊緣模糊,有色彩
#import "GPUImageDilationFilter.h"? ? ? ? ? ? ? ? ? //擴(kuò)展邊緣模糊,變黑白
#import "GPUImageRGBDilationFilter.h"? ? ? ? ? ? ? //RGB擴(kuò)展邊緣模糊,有色彩
#import "GPUImageOpeningFilter.h"? ? ? ? ? ? ? ? ? //黑白色調(diào)模糊
#import "GPUImageRGBOpeningFilter.h"? ? ? ? ? ? ? ? //彩色模糊
#import "GPUImageClosingFilter.h"? ? ? ? ? ? ? ? ? //黑白色調(diào)模糊,暗色會被提亮
#import "GPUImageRGBClosingFilter.h"? ? ? ? ? ? ? ? //彩色模糊,暗色會被提亮
#import "GPUImageLanczosResamplingFilter.h"? ? ? ? //Lanczos重取樣,模糊效果
#import "GPUImageNonMaximumSuppressionFilter.h"? ? //非最大抑制,只顯示亮度最高的像素,其他為黑
#import "GPUImageThresholdedNonMaximumSuppressionFilter.h" //與上相比,像素丟失更多
#import "GPUImageSobelEdgeDetectionFilter.h"? ? ? ? //Sobel邊緣檢測算法(白邊,黑內(nèi)容,有點漫畫的反色效果)
#import "GPUImageCannyEdgeDetectionFilter.h"? ? ? ? //Canny邊緣檢測算法(比上更強烈的黑白對比度)
#import "GPUImageThresholdEdgeDetectionFilter.h"? ? //閾值邊緣檢測(效果與上差別不大)
#import "GPUImagePrewittEdgeDetectionFilter.h"? ? ? //普瑞維特(Prewitt)邊緣檢測(效果與Sobel差不多,貌似更平滑)
#import "GPUImageXYDerivativeFilter.h"? ? ? ? ? ? ? //XYDerivative邊緣檢測,畫面以藍(lán)色為主,綠色為邊緣,帶彩色
#import "GPUImageHarrisCornerDetectionFilter.h"? ? //Harris角點檢測,會有綠色小十字顯示在圖片角點處
#import "GPUImageNobleCornerDetectionFilter.h"? ? ? //Noble角點檢測,檢測點更多
#import "GPUImageShiTomasiFeatureDetectionFilter.h" //ShiTomasi角點檢測,與上差別不大
#import "GPUImageMotionDetector.h"? ? ? ? ? ? ? ? ? //動作檢測
#import "GPUImageHoughTransformLineDetector.h"? ? ? //線條檢測
#import "GPUImageParallelCoordinateLineTransformFilter.h" //平行線檢測
#import "GPUImageLocalBinaryPatternFilter.h"? ? ? ? //圖像黑白化,并有大量噪點
#import "GPUImageLowPassFilter.h"? ? ? ? ? ? ? ? ? //用于圖像加亮
#import "GPUImageHighPassFilter.h"? ? ? ? ? ? ? ? ? //圖像低于某值時顯示為黑
#pragma mark - 視覺效果 Visual Effect
#import "GPUImageSketchFilter.h"? ? ? ? ? ? ? ? ? ? //素描
#import "GPUImageThresholdSketchFilter.h"? ? ? ? ? //閥值素描,形成有噪點的素描
#import "GPUImageToonFilter.h"? ? ? ? ? ? ? ? ? ? ? //卡通效果(黑色粗線描邊)
#import "GPUImageSmoothToonFilter.h"? ? ? ? ? ? ? ? //相比上面的效果更細(xì)膩,上面是粗曠的畫風(fēng)
#import "GPUImageKuwaharaFilter.h"? ? ? ? ? ? ? ? ? //桑原(Kuwahara)濾波,水粉畫的模糊效果;處理時間比較長,慎用
#import "GPUImageMosaicFilter.h"? ? ? ? ? ? ? ? ? ? //黑白馬賽克
#import "GPUImagePixellateFilter.h"? ? ? ? ? ? ? ? //像素化
#import "GPUImagePolarPixellateFilter.h"? ? ? ? ? ? //同心圓像素化
#import "GPUImageCrosshatchFilter.h"? ? ? ? ? ? ? ? //交叉線陰影,形成黑白網(wǎng)狀畫面
#import "GPUImageColorPackingFilter.h"? ? ? ? ? ? ? //色彩丟失,模糊(類似監(jiān)控攝像效果)
#import "GPUImageVignetteFilter.h"? ? ? ? ? ? ? ? ? //暈影,形成黑色圓形邊緣,突出中間圖像的效果
#import "GPUImageSwirlFilter.h"? ? ? ? ? ? ? ? ? ? //漩渦,中間形成卷曲的畫面
#import "GPUImageBulgeDistortionFilter.h"? ? ? ? ? //凸起失真,魚眼效果
#import "GPUImagePinchDistortionFilter.h"? ? ? ? ? //收縮失真,凹面鏡
#import "GPUImageStretchDistortionFilter.h"? ? ? ? //伸展失真,哈哈鏡
#import "GPUImageGlassSphereFilter.h"? ? ? ? ? ? ? //水晶球效果
#import "GPUImageSphereRefractionFilter.h"? ? ? ? ? //球形折射,圖形倒立
#import "GPUImagePosterizeFilter.h"? ? ? ? ? ? ? ? //色調(diào)分離,形成噪點效果
#import "GPUImageCGAColorspaceFilter.h"? ? ? ? ? ? //CGA色彩濾鏡,形成黑、淺藍(lán)、紫色塊的畫面
#import "GPUImagePerlinNoiseFilter.h"? ? ? ? ? ? ? //柏林噪點,花邊噪點
#import "GPUImage3x3ConvolutionFilter.h"? ? ? ? ? ? //3x3卷積,高亮大色塊變黑,加亮邊緣、線條等
#import "GPUImageEmbossFilter.h"? ? ? ? ? ? ? ? ? ? //浮雕效果,帶有點3d的感覺
#import "GPUImagePolkaDotFilter.h"? ? ? ? ? ? ? ? ? //像素圓點花樣
#import "GPUImageHalftoneFilter.h"? ? ? ? ? ? ? ? ? //點染,圖像黑白化,由黑點構(gòu)成原圖的大致圖形
#pragma mark - 混合模式 Blend
#import "GPUImageMultiplyBlendFilter.h"? ? ? ? ? ? //通常用于創(chuàng)建陰影和深度效果
#import "GPUImageNormalBlendFilter.h"? ? ? ? ? ? ? //正常
#import "GPUImageAlphaBlendFilter.h"? ? ? ? ? ? ? ? //透明混合,通常用于在背景上應(yīng)用前景的透明度
#import "GPUImageDissolveBlendFilter.h"? ? ? ? ? ? //溶解
#import "GPUImageOverlayBlendFilter.h"? ? ? ? ? ? ? //疊加,通常用于創(chuàng)建陰影效果
#import "GPUImageDarkenBlendFilter.h"? ? ? ? ? ? ? //加深混合,通常用于重疊類型
#import "GPUImageLightenBlendFilter.h"? ? ? ? ? ? ? //減淡混合,通常用于重疊類型
#import "GPUImageSourceOverBlendFilter.h"? ? ? ? ? //源混合
#import "GPUImageColorBurnBlendFilter.h"? ? ? ? ? ? //色彩加深混合
#import "GPUImageColorDodgeBlendFilter.h"? ? ? ? ? //色彩減淡混合
#import "GPUImageScreenBlendFilter.h"? ? ? ? ? ? ? //屏幕包裹,通常用于創(chuàng)建亮點和鏡頭眩光
#import "GPUImageExclusionBlendFilter.h"? ? ? ? ? ? //排除混合
#import "GPUImageDifferenceBlendFilter.h"? ? ? ? ? //差異混合,通常用于創(chuàng)建更多變動的顏色
#import "GPUImageSubtractBlendFilter.h"? ? ? ? ? ? //差值混合,通常用于創(chuàng)建兩個圖像之間的動畫變暗模糊效果
#import "GPUImageHardLightBlendFilter.h"? ? ? ? ? ? //強光混合,通常用于創(chuàng)建陰影效果
#import "GPUImageSoftLightBlendFilter.h"? ? ? ? ? ? //柔光混合
#import "GPUImageChromaKeyBlendFilter.h"? ? ? ? ? ? //色度鍵混合
#import "GPUImageMaskFilter.h"? ? ? ? ? ? ? ? ? ? ? //遮罩混合
#import "GPUImageHazeFilter.h"? ? ? ? ? ? ? ? ? ? ? //朦朧加暗
#import "GPUImageLuminanceThresholdFilter.h"? ? ? ? //亮度閾
#import "GPUImageAdaptiveThresholdFilter.h"? ? ? ? //自適應(yīng)閾值
#import "GPUImageAddBlendFilter.h"? ? ? ? ? ? ? ? ? //通常用于創(chuàng)建兩個圖像之間的動畫變亮模糊效果
#import "GPUImageDivideBlendFilter.h"? ? ? ? ? ? ? //通常用于創(chuàng)建兩個圖像之間的動畫變暗模糊效果
視頻編輯請看下篇:GPUImage視頻編輯?