使用滑块的模糊效果无法正常工作 [英] Blur effect using slider Is not working properly

查看:141
本文介绍了使用滑块的模糊效果无法正常工作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用了一个滑块来模糊效果到我的图像。我使用以下代码:

I have used a slider for blur effect to my image. I am using the following code:

let currentFilter = CIFilter(name: "CIGaussianBlur")
let beginImage = CIImage(image: imgImage.image!)

currentFilter!.setValue(beginImage, forKey: kCIInputImageKey)
currentFilter!.setValue(sender.value, forKey: kCIInputRadiusKey)

let cropFilter = CIFilter(name: "CICrop")

cropFilter!.setValue(currentFilter!.outputImage, forKey: kCIInputImageKey)
cropFilter!.setValue(CIVector(cgRect: beginImage!.extent), forKey: "inputRectangle")

let output = cropFilter!.outputImage
let cgimg = context.createCGImage(output!, from: output!.extent)
let processedImage = UIImage(cgImage: cgimg!)

imgImage.image = processedImage

问题是当滑块的值递增时,模糊效果会出现,但是当我减小滑块的值时,它将不会消除模糊效果。

The issue is whenever the slider's value is incremented the blur effect appears but when I decrease the value of the slider then it will not removing the blur effect.

推荐答案

您可以将滤镜应用于原始图像而不是已过滤的图像。尝试以下代码。

You can apply the filter into your original image instead of already filtered image. Try below code.

    let context = CIContext(options: nil)

    @IBAction func blurSlider(_ sender: UISlider) {

    let originalImage = UIImage(named: "Your Image Name")
    let currentValue = Int(sender.value)

    let currentFilter = CIFilter(name: "CIGaussianBlur")
    currentFilter!.setValue(CIImage(image: originalImage!), forKey: kCIInputImageKey)
    currentFilter!.setValue(currentValue, forKey: kCIInputRadiusKey)

    let cropFilter = CIFilter(name: "CICrop")
    cropFilter!.setValue(currentFilter!.outputImage, forKey: kCIInputImageKey)
    cropFilter!.setValue(CIVector(cgRect: (CIImage(image: originalImage!)?.extent)!), forKey: "inputRectangle")

    let output = cropFilter!.outputImage
    let cgimg = context.createCGImage(output!, from: output!.extent)
    let processedImage = UIImage(cgImage: cgimg!)
    imgImage.image = processedImage

    }

模拟器的输出:

< a href =https://i.stack.imgur.com/9kkBC.gif =nofollow noreferrer>

注意:我建议您在真实设备中测试代码,因为模拟器的性能也是如此在coreImage上缓慢。

Note: I recommend you to test the code in real device as Simulator performance is too slow on coreImage.

这篇关于使用滑块的模糊效果无法正常工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆