如何使用Core Image API模糊图像看起来就像`UIVisualView`效果?

时间:2017-12-19 04:00:48

标签: ios core-image uivisualeffectview

下面的第一张图片是原始图片 第二个图像是使用Core Image API实现的模糊图像 第三幅图像是使用UIVisualView实现的模糊图像。

很明显,核心图像模糊了图像并缩小了图像。半径越大,白边越宽。

问题:如何使用核心图像产生视觉效果,就像UIVisualView效果一样。

至少,如何使用Core Image模糊没有白色边框的图像。

func blur(image: UIImage, withRadius radius: Float) -> UIImage {
    let context = CIContext(options: nil)
    let image = CIImage(image: image)

    let filter = CIFilter(name: "CIGaussianBlur")
    filter?.setValue(image, forKey: kCIInputImageKey)
    filter?.setValue(radius, forKey: "inputRadius")
    let result = filter?.outputImage
    return UIImage(cgImage: context.createCGImage(result!, from: (result?.extent)!)!)
}

第三张图片是

func addVisualEffectView() {
    let effectView = UIVisualEffectView(effect: UIBlurEffect(style:.light))
    effectView.frame = originalImageView.bounds // originalImageView is the ImageView represents the original image
    originalImageView.addSubview(effectView)
}

enter image description here enter image description here

enter image description here

1 个答案:

答案 0 :(得分:4)

使用此功能,我可以获得视觉效果视图等模糊效果。

toolbar.setContentInsetsAbsolute(0, 0);

CIContext。核心映像的所有处理都在CIContext中完成。这有点类似于Core Graphics或OpenGL上下文。

使用提供的CIImage在上下文中调用createCGImage(from :)将返回一个新的CGImage实例。

本教程将有助于理解:

Core Image Tutorial: Getting Started

这是输出:

enter image description here