【问题标题】:How to correctly pass GPUImage ExposureAdjustment "exposure" parameter in Swift?如何在 Swift 中正确传递 GPUImage ExposureAdjustment“曝光”参数?
【发布时间】:2021-02-22 02:00:57
【问题描述】:

我在 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 实验...提前致谢!

【问题讨论】:

    标签: swift macos gpuimage


    【解决方案1】:

    这一行: public var exposure:Float... 表示 ExposureAdjustment 类的属性。您可以通过拆分过滤器的初始化并在新语句中设置它来设置它。像这样:

    let exposureFilter = GPUImage.ExposureAdjustment()
    exposureFilter.exposure = 5.0
    filteredImage = filteredImage?.filterWithOperation(exposureFilter)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-14
      • 1970-01-01
      • 2020-09-07
      • 1970-01-01
      • 2019-03-10
      • 2018-02-10
      相关资源
      最近更新 更多