DDGScreenShot —圖片加各種濾鏡高逼格操作

weixin_34007291發表於2018-05-01

寫在前面

圖片加各種濾鏡操作,當然蘋果給開發者提供了相關的api和封裝,
大部分開發者感覺這是這是晦澀難懂的,接下來就讓我們來了解一下,
其實也沒有那麼深不可測。

整合成一個三方庫,以下只是部分程式碼,詳細程式碼及demo請見,github地址https://github.com/dudongge/DDGScreenShot

DDGScreenShot 所有功能演示

2106905-71180ef5e446344d
image
2106905-b0575042bce55a58
image

程式碼如下(每一步已經解釋的很詳細)

/**
     ** 圖片濾鏡處理篇
     - 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

結束語

當然這只是拋磚引玉,還有更高階的用法,如高斯模糊,老電影等,
此程式碼已經上傳到githup[DDGScreenShot](https://github.com/dudongge/DDGScreenShot)
[link](https://github.com/dudongge/DDGScreenShot)
當然這只是這個庫的功能的一小部分
想看更多功能,可以去github上下載,如果對您有幫助,希望您不吝給個star.

歡迎檢視DDGScreenShot

其餘功能如下

  1. (一)DDGScreenShot — 複雜螢幕截圖(如view ScrollView webView wkwebView)
  2. (二)DDGScreenShot--iOS 圖片處理--多圖片拼接
  3. (三)DDGScreenShot--iOS 圖片裁剪,切圓角,加邊框,你還用cornerRadius,還有更高階的用法
  4. (四)DDGScreenShot—圖片擦除功能
  5. (五)DDGScreenShot—擷取圖片的任意部分
  6. (六)DDGScreenShot —圖片加各種濾鏡高逼格操作
  7. (七)DDGScreenShot —圖片加高斯模糊,老電影效果

相關文章