*濾鏡:給圖像添加效果
一、介紹:
1拿穴、框架介紹
(1)CoreImage現(xiàn)在自動(dòng)導(dǎo)入了
(2)是一個(gè)圖像框架它基于OpenGL頂層創(chuàng)建底層則用著色器來(lái)處理圖像
(3)它利用了GPU基于硬件加速來(lái)處理圖像
(4)CoreImage中有很多濾鏡
(5)它們能夠一次給予一張圖像或者視頻幀多種視覺(jué)效果->濾鏡鏈
(6)而且濾鏡可以連接起來(lái)組成一個(gè)濾鏡鏈把濾鏡效果疊加起來(lái)處理圖像
2、類的介紹
(1)CIImage:保存圖像數(shù)據(jù)的類
CGImageRef->圖像中的數(shù)據(jù)
(2)CIFilter:濾鏡類圖片屬性進(jìn)行細(xì)節(jié)處理的類它對(duì)所有的像素進(jìn)行操作用鍵-值(KVC)來(lái)設(shè)置
(3)CIContext:上下文是實(shí)現(xiàn)對(duì)圖像處理的具體對(duì)象->濾鏡對(duì)象輸出的圖像并不是合成之后的圖像需要使用圖像處理的上下文合并輸出的圖像
3巍佑、效果介紹100+效果可以通過(guò)attributes查找需要設(shè)置的參數(shù)內(nèi)容
按效果分類:
kCICategoryDistortionEffect扭曲效果纷宇,比如bump、旋轉(zhuǎn)秽荞、hole
kCICategoryGeometryAdjustment 幾何開(kāi)著調(diào)整骤公,比如仿射變換、平切扬跋、透視轉(zhuǎn)換
kCICategoryCompositeOperation合并阶捆,比如源覆蓋(source over)、最小化钦听、源在頂(source atop)洒试、色彩混合模式
kCICategoryHalftoneEffect Halftone效果,比如screen朴上、line
screen垒棋、hatched
kCICategoryColorAdjustment色彩調(diào)整,比如伽馬調(diào)整痪宰、白點(diǎn)調(diào)整捕犬、曝光
kCICategoryColorEffect色彩效果,比如色調(diào)調(diào)整酵镜、posterize
kCICategoryTransition圖像間轉(zhuǎn)換碉碉,比如dissolve、disintegrate with mask淮韭、swipe
kCICategoryTileEffect瓦片效果垢粮,比如parallelogram、triangle
kCICategoryGenerator圖像生成器靠粪,比如stripes蜡吧、constant color、checkerboard
kCICategoryGradient漸變占键,比如軸向漸變昔善、仿射漸變、高斯?jié)u變
kCICategoryStylize風(fēng)格化畔乙,比如像素化君仆、水晶化
kCICategorySharpen銳化、發(fā)光
kCICategoryBlur模糊,比如高斯模糊返咱、焦點(diǎn)模糊钥庇、運(yùn)動(dòng)模糊
按使用場(chǎng)景分類:
kCICategoryStillImage用于靜態(tài)圖像
kCICategoryVideo用于視頻
kCICategoryInterlaced用于交錯(cuò)圖像
kCICategoryNonSquarePixels用于非矩形像素
kCICategoryHighDynamicRange用于HDR
二、使用:
1.查詢效果分類里面的效果
filterNamesInCategory:
2.查詢效果的屬性
[CIFilter filterWithName:XXX].attributes
3咖摹、步驟
(1)實(shí)例CIImage
->先把UIImage->CGImageRef -> CIImage
(2)創(chuàng)建CIFilter濾鏡并給濾鏡設(shè)置屬性(KVC)
(3)創(chuàng)建CIContext上下文
(4)合并濾鏡輸出的圖像->得到一個(gè)合并之后的圖像
(5)賦給UIImageView對(duì)象進(jìn)行顯示
(6)如果想使用濾鏡鏈可以再次疊加效果
精簡(jiǎn)總步驟:
1.查詢效果分類中包含什么效果:filterNamesInCategory:
(1)按住command點(diǎn)擊CIFilter進(jìn)入接口文件找到第128行-148行全部都是效果分類
(2)選擇其中某一個(gè)分類NSLog -> [CIFilter filterNamesInCategory:剛才拷貝的分類]; ->打印出來(lái)的是這個(gè)分類包含的所有效果->拷貝選擇其中的某一個(gè)效果
NSLog(@"%@",[CIFilter filterNamesInCategory:kCICategoryColorEffect]);
2.查詢使用的效果中可以設(shè)置什么屬性(KVC)attributes
NSLog -> [CIFilter filterWithName:剛才拷貝選擇其中的某一個(gè)效果].attributes ->得到這個(gè)濾鏡所有可以設(shè)置的屬性
使用步驟
1.需要添加濾鏡的源圖
2.初始化一個(gè)濾鏡設(shè)置濾鏡(根據(jù)查詢到的屬性來(lái)設(shè)置)
3.把濾鏡輸出的圖像和濾鏡合并CIContext ->得到一個(gè)合成之后的圖像
4.展示