图片加各类滤镜操做,固然苹果给开发者提供了相关的api和封装, 大部分开发者感受这是这是晦涩难懂的,接下来就让咱们来了解一下, 其实也没有那么深不可测。
/** ** 图片滤镜处理篇 - 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.
欢迎查看DDGScreenShotgit