? CoreImage 是一個功能強大的框架,通過這個框架很容易對圖像進行處理,比如模糊,色彩,像素等,使用CoreImage主要和CIContent,CIImage,CIFilter打交道。
?Core Image三個核心API
CIContext. 所有圖像處理都是在一個CIContext 中完成的,這很像是一個Core Image處理器或是OpenGL的上下文。
CIImage. 這個類保存圖像數(shù)據(jù)。它可以從UIImage、圖像文件、或者是像素數(shù)據(jù)中構(gòu)造出來。
CIFilter. 濾鏡類包含一個字典結(jié)構(gòu),對各種濾鏡定義了屬于他們各自的屬性。濾鏡有很多種,比如鮮艷程度濾鏡,色彩反轉(zhuǎn)濾鏡,剪裁濾鏡等等。
了解了以上三個api我們就可以使用了,使用的過程大致如下:
1.創(chuàng)建CIContent對象我們需要使用這個對象將CIImage轉(zhuǎn)為CGImageRef,這個對象可以重復使用,當我們使用CIContent時盡量重復使用,避免頻繁創(chuàng)建造成性能問題。
創(chuàng)建方法:

2.過濾器,CIFilter一般通過filterWithName方法獲取,參數(shù)為過濾器名字,每個過濾器有自己唯一的屬性,通過設置好這些屬性對圖像進行處理。
3.創(chuàng)建CIImage,它代表需要處理的圖像,有多個種創(chuàng)建方法,具體可點進頭文件查看。
4.通過[filter outputImage]獲得處理過后的CIImage,然后通過CIContent createCGImage: fromRect:方法得到CGImageRef從而得到UIImage,當然我們也可以通過UImage的分類imageWithCIImage得到,這個方法每次都創(chuàng)建了CIContent,并沒有對CIContent的重復使用,頻繁使用可能影響性能。
下面列舉常用的幾個濾鏡:
色彩控制濾鏡-CIColorControls

其中imageFromCIImage:Content如下

該方法主要實現(xiàn)將CIImage轉(zhuǎn)換為UIImage。
反轉(zhuǎn)顏色濾鏡-CIColorInvert

棕色濾鏡-CISepiaTone

模糊濾鏡-CIGaussianBlur

像素濾鏡-CIPixellate

人臉檢測

featuresWithImage: content:方法如下:

獲得左眼/右眼/嘴部位置,通過該方法可以獲取臉部的左眼,右眼,嘴部的位置

FacePartType 為枚舉類型定義如下:

Core Image定義了上百種過濾器,但是也只有一部分能使用在ios上,可以通過以下方法獲得內(nèi)設的過濾器。

總結(jié):CoreImage提供了簡單的方法對圖像進行處理,雖然方法簡單,功能卻很強大。就是有點不好記住,比如過濾器的名字,太多了不好記,至于過濾器要設置的屬性,每個過濾器有自己的屬性,記不住屬性名,可以通過po [filter attributes]查看過濾器的屬性信息。