Core Image前言
Core Image
是iOS推出一個進行圖像處理相關的庫,也可以進行視頻方面的處理。濾鏡URL。官方文檔在介紹上很詳細,必須大多數濾鏡效果都有一個樣式結果進行查看。在使用上,可以對圖片進行一定的變形、美化、疊加、馬賽克等。
每一個濾鏡都會有一些相應的屬性。inputImage
和outputImage
是所有濾鏡都有的屬性,均適用CIImage
格式,不過后者沒有體現出來。但是在導出效果圖片的時候都會使用到。另外,還有一些濾鏡擁有inputCenter
、inputScale
等一些屬性,至于其使用的格式,可以在上述鏈接中,查到。
比如要使用CIPhotoEffectMono
濾鏡的效果,代碼如下。
CIImage *inputImage = [CIImage imageWithCGImage:image.CGImage];
CIFilter *filter = [CIFilter filterWithName:@"CIPhotoEffectMono" keysAndValues:kCIInputImageKey,inputImage ,nil];
CIContext *ciContext = [CIContext contextWithOptions:nil];
CGImageRef cgImage = [ciContext createCGImage:filter.outputImage fromRect:inputImage.extent];
UIImage *resultImage = [UIImage imageWithCGImage:cgImage];
需要把 所需調整的圖片,轉成 CIImage
格式,再使用CIFilter
進行初始化值。
另外,有些濾鏡會使用到CIVector
的。CIVector
類似一個坐標屬性的東西,可以通過一維、二維、三維、四維,傳入參數進行初始化。
比如一個 CIPixellate
的使用效果,顧名思義,這是用于生成馬賽克效果的濾鏡。其中,除了inputImage
外,還有inputCenter
(像素化中心位置,是指圖片上的坐標,使用CIVector格式,穿入二維坐標(x,y)),以及inputScale
(像素化的程度大小,NSNumber
格式)。
CIImage *inputImage = [CIImage imageWithCGImage:image.CGImage];
CIFilter *filter = [CIFilter filterWithName:@"CIPixellate" keysAndValues:kCIInputImageKey,inputImage ,kCIInputCenterKey,[CIVector vectorWithX:_sourceImageView.image.size.width/2.0f Y:_sourceImageView.image.size.height/2.0f],kCIInputScaleKey,[NSNumber numberWithInteger:50],nil];
CIContext *ciContext = [CIContext contextWithOptions:nil];
CGImageRef cgImage = [ciContext createCGImage:filter.outputImage fromRect:inputImage.extent];
UIImage *image = [UIImage imageWithCGImage:cgImage];
2017年04月21日 更新幾個鏈接...
- Core Image簡單使用
- iOS CoreImage學習
- GPUImage Github鏈接
- 源碼級別對GPUImage進行剖析
- 基于GPUImage的實時視頻流動態貼紙Demo
- 實時濾鏡,自定義相機
END。
我是小侯爺。
在魔都艱苦奮斗,白天是上班族,晚上是知識服務工作者。
如果讀完覺得有收獲的話,記得關注和點贊哦。
非要打賞的話,我也是不會拒絕的。