[iOS]Mickey Photos相片編輯App-Part3.濾鏡
CoreImage.CIFilterBuiltins/CIImage/CIFilter/CIContex
這次作品分成四篇
Part1.Delegate/資料傳遞
Part2.翻轉/裁切
Part3.濾鏡
Part4.貼圖/背景圖/文字/儲存
其他篇在這~
濾鏡
加入套件CoreImage.CIFilterBuiltins
首先import CoreImage.CIFilterBuiltins
各種濾鏡風格
接著從下方連結挑選自己想要的濾鏡風格,打包到array之中
產生CIImage
因為CIFilter只能作用在CIImage,所以必須先讓UIImge轉換到CIImage
傳入kCIInputImageKey
在forKey參數傳入kCIInputImageKey
告訴他我們要套濾鏡的圖片,也就是ciImage
輸出已套用濾鏡的圖片
這邊運用if let 語法(optional binding),是因為輸出的過程很有可能產生錯誤,為了確保程式不會發生錯誤閃退,使用if let 做一層保險。
.outputImage
可輸出經過濾鏡的圖片,但是要再經過CIContext()
的createCGimage
才能得到我們想要的圖像大小,從官方文件可看到from參數是要傳入CGRect
.extent
代表的是圖片範圍,繼承CGRect
接著要再把CGImage轉換回去UIImage,怎麼過去的就要怎麼回來啊!
將濾鏡按鈕設定tag數字,即可對應filterArray之中的濾鏡效果
//選取濾鏡風格@IBAction func pressFilterBtn(_ sender: UIButton) { if sender.tag == 0 { editImageView.image = photoImg.photo } else { filterNum = sender.tag buildFilter() }}
參考資料
Processing an Image Using Built-in Filters