通过 gpuimage2 swift 中的滑块控件将亮度等滤镜强度从 0 更改为 100
Change filter intensity like brightness from 0 to 100 via slider control in gpuimage2 swift
我按照 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()
}
}
在 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);
这种方法有什么问题吗?
谢谢
每次您的滑块值更改时,您都在创建一个新的 ContrastAdjustment 滤镜实例并将其附加到图片。您的旧过滤器实例仍然存在,并且 RenderView 将忽略第一个进入它的输入之外的任何输入。事实上,您应该一直在控制台上看到警告,告诉您您向 RenderView 添加了太多输入。
无需每次都创建全新的 ContrastAdjustment 滤镜,只需将对比度滤镜保存为实例变量并在滑块更改时调整其 contrast
属性。
我按照 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()
}
}
在 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);
这种方法有什么问题吗?
谢谢
每次您的滑块值更改时,您都在创建一个新的 ContrastAdjustment 滤镜实例并将其附加到图片。您的旧过滤器实例仍然存在,并且 RenderView 将忽略第一个进入它的输入之外的任何输入。事实上,您应该一直在控制台上看到警告,告诉您您向 RenderView 添加了太多输入。
无需每次都创建全新的 ContrastAdjustment 滤镜,只需将对比度滤镜保存为实例变量并在滑块更改时调整其 contrast
属性。