问题描述
我在Swift上为GPUImage挣扎了几天,我认为现在是时候寻求帮助或至少是一条线索了。
我想做的是用GPUImage调整NSImage的曝光,但是到目前为止,我却惨败了。
我的代码适用于SmoothToonFilter之类的滤镜,但是我似乎无法为ExposureAdjustment滤镜设置曝光参数...而且我不知道如何解决此问题。
这是使用smoothSmoothToonFilter的功能:
filteredImage = filteredImage?.filterWithOperation(GPUImage.SmoothToonFilter()
..但不是:
filteredImage = filteredImage?.filterWithOperation(GPUImage.ExposureAdjustment() )
它也不接受我这样做:
filteredImage = filteredImage?.filterWithOperation(GPUImage.ExposureAdjustment(5.0) )
或者这个:
filteredImage = filteredImage?.filterWithOperation(GPUImage.ExposureAdjustment(exposure: 5.0) )
GPUImage项目中的ExposureAdjustment.swift清楚地(无论如何对我来说)表明有一种设置方法……
public class ExposureAdjustment: Basicoperation {
public var exposure:Float = 0.0 { didSet { uniformSettings["exposure"] = exposure } }
public init() {
super.init(fragmentShader:ExposureFragmentShader,numberOfInputs:1)
({exposure = 0.0})()
}
}
我知道这个问题完全是我缺乏知识的错,但是我真的尝试自己解决这个问题,直到让我绝对发疯...我真的很感谢一些帮助,所以我可以继续进行我的Swift实验...预先感谢!
解决方法
此行:
public var exposure:Float...
表示ExposureAdjustment
类的属性。您可以通过拆分过滤器的初始化并在新语句中进行设置来进行设置。像这样:
let exposureFilter = GPUImage.ExposureAdjustment()
exposureFilter.exposure = 5.0
filteredImage = filteredImage?.filterWithOperation(exposureFilter)