Unable to Decrease CIVignette effect using UISlide

2019-06-03 10:36发布

I have used CIVignette effect for My Photo Editing app. It applying based on Slider's Changing event. I have used following code and my issue is whenever I increased slider's value Vignette effect is appeared but whenever I decrease slider's value the Vignette effect does not decrease.
Please Help.

@IBAction func slider(_ sender: UISlider) {

        let startImage = CIImage(image: imgEdited!)!

        let vignetteFilter = CIFilter(name: "CIVignette")!

        let radius = 5

        vignetteFilter.setValue(startImage, forKey:kCIInputImageKey)
        vignetteFilter.setValue(sender.value, forKey:"inputIntensity")
        vignetteFilter.setValue(radius, forKey:"inputRadius")

        let filteredImageData = vignetteFilter.value(forKey: kCIOutputImageKey) as! CIImage
        let filteredImageRef = self.context.createCGImage(filteredImageData, from: filteredImageData.extent)

        imgImage.image = UIImage.init(cgImage: filteredImageRef!)
        self.imgEdited = imgImage.image
}

1条回答
对你真心纯属浪费
2楼-- · 2019-06-03 11:08

Below code based on my answer to the other SO post Blur effect using slider Is not working properly.

 @IBAction func slider(_ sender: UISlider) {

    let startImage = CIImage(image: UIImage(named: "Your Image Name")!) // You should initialise your UIImage here not UIImageView
    let vignetteFilter = CIFilter(name: "CIVignette")! 

    vignetteFilter.setValue(startImage, forKey:kCIInputImageKey)
    vignetteFilter.setValue(sender.value, forKey:kCIInputIntensityKey)
    vignetteFilter.setValue(5, forKey:kCIInputRadiusKey)

    let filteredImageData = vignetteFilter.value(forKey: kCIOutputImageKey) as! CIImage
    let filteredImageRef = self.context.createCGImage(filteredImageData, from: filteredImageData.extent)

    self.imgView.image = UIImage.init(cgImage: filteredImageRef!) // Output

 }

Output from the Sim:

enter image description here

查看更多
登录 后发表回答