当前位置: > > > Swift - 实现图片的模糊效果(高斯模糊滤镜)

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
评论0