通过gpuimage2 swift中的滑块控件更改滤镜强度,如亮度从0到100

时间:2017-06-05 07:09:47

标签: ios swift gpuimage

我按照从GPUImage2示例更改摄像机滤镜强度的示例,我尝试使用iOS滑块控件更改静态图像上的滤镜强度,但它不会改变强度。

    @IBOutlet weak var renderView: RenderView!
     var filterContrast:ContrastAdjustment!
    @IBOutlet weak var sliderContrast: UISlider!
    let inputImage = UIImage(named:"WID-small.jpg")!
     var picture:PictureInput!

     // setting dynamic observable property.
     dynamic var filterValue = 3.0 {

     didSet {
        filterContrast.contrast = GLfloat(filterValue)
        picture.processImage()
     }
}

on viewDidLayoutSubviews

    picture = PictureInput(image: inputImage)
    filterContrast = ContrastAdjustment();

    picture --> filterContrast --> renderView
    filterValue  = 3; // will call did set property and call processimage from it

关于滑块更新

        filterValue = Double(nm);

这种方法有什么问题吗?

由于

1 个答案:

答案 0 :(得分:1)

每次滑块值更改时,您都会创建一个新的ContrastAdjustment过滤器实例并将其附加到图片中。您的旧过滤器实例仍然存在,并且RenderView将忽略第一个进入它之外的任何输入。实际上,您应该在控制台上看到警告,告诉您有关向RenderView添加过多输入的事实。

不是每次都创建一个全新的ContrastAdjustment过滤器,只需将对比度过滤器保存为实例变量,并在滑块更改时调整其contrast属性。