Swift - 实现图片的模糊效果(高斯模糊滤镜)
我之前写过一篇文章演示如何实现毛玻璃效果:Swift - 实现毛玻璃效果(Blur、模糊、虚化背景元素)。原理是通过添加一个模糊视图,使得其覆盖下的所有视图都会有模糊效果。
本文介绍另一种实现图片模糊的方法,即使用高斯模糊滤镜。
1,效果图
通过滑动滑块,设置不同的模糊半径来实现不同的模糊程度。
2,样例代码
import UIKit class ViewController: UIViewController { @IBOutlet weak var imageView: UIImageView! @IBOutlet weak var slider: UISlider! //原图 lazy var originalImage: UIImage = { return UIImage(named: "image1.jpg") }()! lazy var context: CIContext = { return CIContext(options: nil) }() override func viewDidLoad() { super.viewDidLoad() } //滑块拖动后 @IBAction func sliderValueChanged(_ sender: AnyObject) { //获取原始图片 let inputImage = CIImage(image: originalImage) //使用高斯模糊滤镜 let filter = CIFilter(name: "CIGaussianBlur")! filter.setValue(inputImage, forKey:kCIInputImageKey) //设置模糊半径值(越大越模糊) filter.setValue(slider.value, forKey: kCIInputRadiusKey) let outputCIImage = filter.outputImage! let rect = CGRect(origin: CGPoint.zero, size: originalImage.size) let cgImage = context.createCGImage(outputCIImage, from: rect) //显示生成的模糊图片 imageView.image = UIImage(cgImage: cgImage!) } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() } }源码下载:hangge_1424.zip