前處理: 美顏算法,視頻的模糊效果, 水印等都是在這個(gè)環(huán)節(jié)做. 目前iOS端最著名開(kāi)源框架的毫無(wú)疑問(wèn)就是GPUImage.其中內(nèi)置了125種渲染效果, 還支持各種腳本自定義.GPUImage所有濾鏡介紹都說(shuō)「80% 的主播沒(méi)有美顏根本沒(méi)法看」,美顏是直播產(chǎn)品中最常見(jiàn)的功能之一。
GPUImage是Brad Larson在github托管的一個(gè)開(kāi)源項(xiàng)目,項(xiàng)目實(shí)現(xiàn)了圖片濾鏡院溺、攝像頭實(shí)時(shí)濾鏡,該項(xiàng)目的優(yōu)點(diǎn)不但在于濾鏡很多瑰步,而且處理效果是基于GPU的姨拥,比使用CPU性能更高。
下載地址是:https://github.com/BradLarson/GPUImage
//已有的一些filter介紹:
#import?"GPUImageBrightnessFilter.h"????????????????//亮度
#import?"GPUImageExposureFilter.h"??????????????????//曝光
#import?"GPUImageContrastFilter.h"??????????????????//對(duì)比度
#import?"GPUImageSaturationFilter.h"????????????????//飽和度
#import?"GPUImageGammaFilter.h"?????????????????????//伽馬線(xiàn)
#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)曲線(xiàn)
#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"?//像素色值亮度平均颈抚,圖像黑白(有類(lèi)似漫畫(huà)效果)
#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"???????????????????//線(xiàn)條
#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)模糊赐稽,暗色會(huì)被提亮
#import?"GPUImageRGBClosingFilter.h"????????????????//彩色模糊,暗色會(huì)被提亮
#import?"GPUImageLanczosResamplingFilter.h"?????????//Lanczos重取樣浑侥,模糊效果
#import?"GPUImageNonMaximumSuppressionFilter.h"?????//非最大抑制姊舵,只顯示亮度最高的像素,其他為黑
#import?"GPUImageThresholdedNonMaximumSuppressionFilter.h"?//與上相比寓落,像素丟失更多
#import?"GPUImageSobelEdgeDetectionFilter.h"????????//Sobel邊緣檢測(cè)算法(白邊括丁,黑內(nèi)容,有點(diǎn)漫畫(huà)的反色效果)
#import?"GPUImageCannyEdgeDetectionFilter.h"????????//Canny邊緣檢測(cè)算法(比上更強(qiáng)烈的黑白對(duì)比度)
#import?"GPUImageThresholdEdgeDetectionFilter.h"????//閾值邊緣檢測(cè)(效果與上差別不大)
#import?"GPUImagePrewittEdgeDetectionFilter.h"??????//普瑞維特(Prewitt)邊緣檢測(cè)(效果與Sobel差不多伶选,貌似更平滑)
#import?"GPUImageXYDerivativeFilter.h"??????????????//XYDerivative邊緣檢測(cè)史飞,畫(huà)面以藍(lán)色為主,綠色為邊緣考蕾,帶彩色
#import?"GPUImageHarrisCornerDetectionFilter.h"?????//Harris角點(diǎn)檢測(cè)祸憋,會(huì)有綠色小十字顯示在圖片角點(diǎn)處
#import?"GPUImageNobleCornerDetectionFilter.h"??????//Noble角點(diǎn)檢測(cè),檢測(cè)點(diǎn)更多
#import?"GPUImageShiTomasiFeatureDetectionFilter.h"?//ShiTomasi角點(diǎn)檢測(cè)蚯窥,與上差別不大
#import?"GPUImageMotionDetector.h"??????????????????//動(dòng)作檢測(cè)
#import?"GPUImageHoughTransformLineDetector.h"??????//線(xiàn)條檢測(cè)
#import?"GPUImageParallelCoordinateLineTransformFilter.h"?//平行線(xiàn)檢測(cè)
#import?"GPUImageLocalBinaryPatternFilter.h"????????//圖像黑白化,并有大量噪點(diǎn)
#import?"GPUImageLowPassFilter.h"???????????????????//用于圖像加亮
#import?"GPUImageHighPassFilter.h"??????????????????//圖像低于某值時(shí)顯示為黑
#pragma?mark?-?視覺(jué)效果?Visual?Effect?-
#import?"GPUImageSketchFilter.h"????????????????????//素描
#import?"GPUImageThresholdSketchFilter.h"???????????//閥值素描塞帐,形成有噪點(diǎn)的素描
#import?"GPUImageToonFilter.h"??????????????????????//卡通效果(黑色粗線(xiàn)描邊)
#import?"GPUImageSmoothToonFilter.h"????????????????//相比上面的效果更細(xì)膩拦赠,上面是粗曠的畫(huà)風(fēng)
#import?"GPUImageKuwaharaFilter.h"??????????????????//桑原(Kuwahara)濾波,水粉畫(huà)的模糊效果;處理時(shí)間比較長(zhǎng)葵姥,慎用
#import?"GPUImageMosaicFilter.h"????????????????????//黑白馬賽克
#import?"GPUImagePixellateFilter.h"?????????????????//像素化
#import?"GPUImagePolarPixellateFilter.h"????????????//同心圓像素化
#import?"GPUImageCrosshatchFilter.h"????????????????//交叉線(xiàn)陰影荷鼠,形成黑白網(wǎng)狀畫(huà)面
#import?"GPUImageColorPackingFilter.h"??????????????//色彩丟失,模糊(類(lèi)似監(jiān)控?cái)z像效果)
#import?"GPUImageVignetteFilter.h"??????????????????//暈影榔幸,形成黑色圓形邊緣允乐,突出中間圖像的效果
#import?"GPUImageSwirlFilter.h"?????????????????????//漩渦矮嫉,中間形成卷曲的畫(huà)面
#import?"GPUImageBulgeDistortionFilter.h"???????????//凸起失真,魚(yú)眼效果
#import?"GPUImagePinchDistortionFilter.h"???????????//收縮失真牍疏,凹面鏡
#import?"GPUImageStretchDistortionFilter.h"?????????//伸展失真蠢笋,哈哈鏡
#import?"GPUImageGlassSphereFilter.h"???????????????//水晶球效果
#import?"GPUImageSphereRefractionFilter.h"??????????//球形折射,圖形倒立
#import?"GPUImagePosterizeFilter.h"?????????????????//色調(diào)分離鳞陨,形成噪點(diǎn)效果
#import?"GPUImageCGAColorspaceFilter.h"?????????????//CGA色彩濾鏡昨寞,形成黑、淺藍(lán)厦滤、紫色塊的畫(huà)面
#import?"GPUImagePerlinNoiseFilter.h"???????????????//柏林噪點(diǎn)援岩,花邊噪點(diǎn)
#import?"GPUImage3x3ConvolutionFilter.h"????????????//3x3卷積,高亮大色塊變黑掏导,加亮邊緣享怀、線(xiàn)條等
#import?"GPUImageEmbossFilter.h"????????????????????//浮雕效果,帶有點(diǎn)3d的感覺(jué)
#import?"GPUImagePolkaDotFilter.h"??????????????????//像素圓點(diǎn)花樣
#import?"GPUImageHalftoneFilter.h"??????????????????//點(diǎn)染,圖像黑白化碘菜,由黑點(diǎn)構(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"???????????????//加深混合,通常用于重疊類(lèi)型
#import?"GPUImageLightenBlendFilter.h"??????????????//減淡混合,通常用于重疊類(lèi)型
#import?"GPUImageSourceOverBlendFilter.h"???????????//源混合
#import?"GPUImageColorBurnBlendFilter.h"????????????//色彩加深混合
#import?"GPUImageColorDodgeBlendFilter.h"???????????//色彩減淡混合
#import?"GPUImageScreenBlendFilter.h"???????????????//屏幕包裹,通常用于創(chuàng)建亮點(diǎn)和鏡頭眩光
#import?"GPUImageExclusionBlendFilter.h"????????????//排除混合
#import?"GPUImageDifferenceBlendFilter.h"???????????//差異混合,通常用于創(chuàng)建更多變動(dòng)的顏色
#import?"GPUImageSubtractBlendFilter.h"?????????????//差值混合,通常用于創(chuàng)建兩個(gè)圖像之間的動(dòng)畫(huà)變暗模糊效果
#import?"GPUImageHardLightBlendFilter.h"????????????//強(qiáng)光混合,通常用于創(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)建兩個(gè)圖像之間的動(dòng)畫(huà)變亮模糊效果
#import?"GPUImageDivideBlendFilter.h"???????????????//通常用于創(chuàng)建兩個(gè)圖像之間的動(dòng)畫(huà)變暗模糊效果