Swift - 实现图片的模糊效果(高斯模糊滤镜)
作者:hangge | 2016-11-07 08:45
我之前写过一篇文章演示如何实现毛玻璃效果:Swift - 实现毛玻璃效果(Blur、模糊、虚化背景元素)。原理是通过添加一个模糊视图,使得其覆盖下的所有视图都会有模糊效果。



hangge_1424.zip
本文介绍另一种实现图片模糊的方法,即使用高斯模糊滤镜。
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()
}
}
源码下载:
全部评论(0)