使用Swift中的滑块控制ciFilter

时间:2016-10-25 13:59:12

标签: swift core-image

我正在尝试使用ImageView上的CIBoxBlur滤镜来实现模糊效果。我正在使用UISlider来控制模糊值。当我增加滑块值时,效果有效。我可以清楚地看到应用于imageView.But的模糊值,当我 减少滑块值模糊已经更深入我的imageView.ImageView不会恢复正常。我知道为什么会发生。但我不知道如何解决它。

@IBOutlet weak var blur: UISlider!

@IBAction func blurSlider(_ sender: UISlider) {

    let currentValue = Int(sender.value)
    blur.maximumValue = 5
    blur.minimumValue = 0

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

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

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

}

先谢谢。

1 个答案:

答案 0 :(得分:1)

非常简单。您可以在原始图像上应用滤镜,而不是已经过滤的图像。这段代码会有所帮助。

{{1}}