? CoreImage 是一個(gè)功能強(qiáng)大的框架,通過這個(gè)框架很容易對圖像進(jìn)行處理,比如模糊渣触,色彩爸舒,像素等蟋字,使用CoreImage主要和CIContent,CIImage扭勉,CIFilter打交道鹊奖。
?Core Image三個(gè)核心API
CIContext. 所有圖像處理都是在一個(gè)CIContext 中完成的,這很像是一個(gè)Core Image處理器或是OpenGL的上下文涂炎。
CIImage. 這個(gè)類保存圖像數(shù)據(jù)忠聚。它可以從UIImage、圖像文件唱捣、或者是像素?cái)?shù)據(jù)中構(gòu)造出來两蟀。
CIFilter. 濾鏡類包含一個(gè)字典結(jié)構(gòu),對各種濾鏡定義了屬于他們各自的屬性爷光。濾鏡有很多種垫竞,比如鮮艷程度濾鏡澎粟,色彩反轉(zhuǎn)濾鏡蛀序,剪裁濾鏡等等。
了解了以上三個(gè)api我們就可以使用了活烙,使用的過程大致如下:
1.創(chuàng)建CIContent對象我們需要使用這個(gè)對象將CIImage轉(zhuǎn)為CGImageRef徐裸,這個(gè)對象可以重復(fù)使用,當(dāng)我們使用CIContent時(shí)盡量重復(fù)使用啸盏,避免頻繁創(chuàng)建造成性能問題重贺。
創(chuàng)建方法:
2.過濾器,CIFilter一般通過filterWithName方法獲取回懦,參數(shù)為過濾器名字气笙,每個(gè)過濾器有自己唯一的屬性,通過設(shè)置好這些屬性對圖像進(jìn)行處理怯晕。
3.創(chuàng)建CIImage潜圃,它代表需要處理的圖像,有多個(gè)種創(chuàng)建方法舟茶,具體可點(diǎn)進(jìn)頭文件查看谭期。
4.通過[filter outputImage]獲得處理過后的CIImage,然后通過CIContent createCGImage: fromRect:方法得到CGImageRef從而得到UIImage吧凉,當(dāng)然我們也可以通過UImage的分類imageWithCIImage得到隧出,這個(gè)方法每次都創(chuàng)建了CIContent,并沒有對CIContent的重復(fù)使用阀捅,頻繁使用可能影響性能胀瞪。
下面列舉常用的幾個(gè)濾鏡:
色彩控制濾鏡-CIColorControls
其中imageFromCIImage:Content如下
該方法主要實(shí)現(xiàn)將CIImage轉(zhuǎn)換為UIImage。
反轉(zhuǎn)顏色濾鏡-CIColorInvert
棕色濾鏡-CISepiaTone
模糊濾鏡-CIGaussianBlur
像素濾鏡-CIPixellate
人臉檢測
featuresWithImage: content:方法如下:
獲得左眼/右眼/嘴部位置饲鄙,通過該方法可以獲取臉部的左眼凄诞,右眼涵紊,嘴部的位置
FacePartType 為枚舉類型定義如下:
Core Image定義了上百種過濾器,但是也只有一部分能使用在ios上幔摸,可以通過以下方法獲得內(nèi)設(shè)的過濾器摸柄。
總結(jié):CoreImage提供了簡單的方法對圖像進(jìn)行處理,雖然方法簡單既忆,功能卻很強(qiáng)大驱负。就是有點(diǎn)不好記住,比如過濾器的名字患雇,太多了不好記跃脊,至于過濾器要設(shè)置的屬性,每個(gè)過濾器有自己的屬性苛吱,記不住屬性名酪术,可以通過po [filter attributes]查看過濾器的屬性信息。