寫在前面
圖片加各種濾鏡操作,當然蘋果給開發(fā)者提供了相關的api和封裝,
大部分開發(fā)者感覺這是這是晦澀難懂的,接下來就讓我們來了解一下,
其實也沒有那么深不可測。
整合成一個三方庫,以下只是部分代碼,詳細代碼及demo請見,github地址https://github.com/dudongge/DDGScreenShot
DDGScreenShot 所有功能演示
image
image
代碼如下(每一步已經(jīng)解釋的很詳細)
/**
** 圖片濾鏡處理篇
- image --傳圖片
- filter -- 傳入濾鏡
*/
public func imageFilterHandel(image: UIImage, filterName: String) -> UIImage? {
//輸入圖片
let inputImage = CIImage(image: image)
//設置filter健值
let filter = CIFilter(name: filterName)
filter?.setValue(inputImage, forKey: kCIInputImageKey)
//得到濾鏡中輸出圖像
let outputImage = filter?.outputImage!
//設置上下文
let context: CIContext = CIContext(options: nil)
//通過上下文繪制獲取
let cgImage = context.createCGImage(outputImage!, from: (outputImage?.extent)!)
//得到最新的圖片
let newImage = UIImage(cgImage: cgImage!)
return newImage
}
/**
** 圖片濾鏡處理篇
- image --傳圖片
- filter -- 傳入濾鏡
- parameter completed: 異步完成回調(主線程回調)
*/
public func async_imageFilterHandel(image: UIImage, filterName: String,completed:@escaping (UIImage?) -> ()) -> Void {
DispatchQueue.global().async{
let newImage = self.imageFilterHandel(image: image, filterName: filterName)
DispatchQueue.main.async(execute: {
completed(newImage)
})
}
}
//具體用法
let newImage = DDGManage.share.imageFilterHandel(image: originalImage, filterName: "CIPhotoEffectInstant")
self.imageView.image = newImage
結束語
當然這只是拋磚引玉,還有更高級的用法,如高斯模糊,老電影等,
此代碼已經(jīng)上傳到githup[DDGScreenShot](https://github.com/dudongge/DDGScreenShot)
[link](https://github.com/dudongge/DDGScreenShot)
當然這只是這個庫的功能的一小部分
想看更多功能,可以去github上下載,如果對您有幫助,希望您不吝給個star.
歡迎查看DDGScreenShot