无法使用UISlider降低CIVignette效果 [英] Unable to Decrease CIVignette effect using UISlider

查看:90
本文介绍了无法使用UISlider降低CIVignette效果的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在我的照片编辑应用中使用了 CIVignette 效果。它基于Slider的Changeing事件应用。我使用了以下代码,但我的问题是每当出现增加滑块值的Vignette效果时出现,但每当我降低滑块值的Vignette效果都不会减少。

请帮助。 b $ b

  @IBAction函数滑块(_发送者:UISlider){

让startImage = CIImage(image:imgEdited!)!

让vignetteFilter = CIFilter(name: CIVignette)!

让半径= 5

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

让filteredImageData = vignetteFilter.value(forKey:kCIOutputImageKey)为! CIImage
让filteredImageRef = self.context.createCGImage(filteredImageData,来自:filteredImageData.extent)

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


解决方案

下面的代码根据我对其他 SO 帖子的回答


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
}

解决方案

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:

这篇关于无法使用UISlider降低CIVignette效果的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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