【问题标题】:Slider settings for GPUImageGPUImage 的滑块设置
【发布时间】:2013-08-08 22:44:24
【问题描述】:

我正在制作一个应用程序,允许用户使用 UISlider 将 GPUImage 过滤器应用于静态照片。我希望滑块最初从每个过滤器的零点开始(即尚未应用任何过滤器的值),我想知道如何确定这一点?我使用了 GPUImage 文档中列出的一些值,并且对于某些滑块,它们从 0 开始,但其他一些则很难确定(对于某些人来说,最小值和最大值对我来说很遥远)。 GPUImagePosterizeFilter 之类的值对我来说似乎很遥远(将最小值设置为 1,最大值设置为 128,初始设置为 1)。我还检查了 FilterShowcase 测试项目中的一些值,这些值与文档不同,但并不总是从 0 开始。我是否完全错过了这里的重点?或者是否有一些设置我可能必须打开才能与滑块值一致?

【问题讨论】:

    标签: iphone ios cocoa-touch gpuimage


    【解决方案1】:

    不,没有设置。我真正能推荐的是,为了尽可能高效,在单个方法中创建一个 switch 语句,并通过当前选择的过滤器的索引来确定要做什么。

    从那里,我会让滑块的最小/最大值保持不变,这样您就不必在过滤器发生变化时从一个计算点动画到另一个计算点,并将滑块的值以数学方式转换为当前过滤器的单位明白。即 0-1 --> 1-128

    【讨论】:

    • 有一天,我可能会为建议的最小值、最大值和默认值添加某种可读属性,但在某些情况下即使这样也会很棘手。例如,许多过滤器支持多种设置或非浮点类型(如矩阵),因此将单个值作为读数将是有问题的。这就是为什么我在 FilterShowcase 示例中拥有所有开关盒的原因。
    • 另外,我确实落后于更新文档以反映我和其他人在各种过滤器中所做的更改,并确保所有过滤器都列在那里。
    • @BradLarson 我最近使用 GPUImage 做了一些与开关相关的事情,这可能不是最好的方法,但是使用 GPUImage 为我节省了多少时间,这很难抱怨。这个解决方案可以奏效。即使它只是一个描述性的字符串,比如-[GPUImageFilter filterDescription],它也可能会有所帮助。
    • @BradLarson - 感谢 Brad 的回复,感谢您制作了这个出色的框架。你有paypal,所以我可以捐款吗?至于我的问题,我的过滤器确实有一个 switch 语句,并且我将滑块值基于文档或 FilterShowcase 中的值。我确实了解设置可能不是最新的,我想知道的是,是否有手动方法可以找到滑块的“0”点? (即,当您将滤镜应用于照片时,它完全没有任何作用,因为它处于最低点?
    • @BradLarson - 只是试图找到那个点,所以当用户开始过滤照片时,它似乎正在从没有过滤器平滑过渡到应用过滤器。我想我可以通过反复试验找出最小/最大值,但你会碰巧知道更精确的方法来找到它们吗?
    【解决方案2】:

    我想我可能以错误的方式处理这个问题。与其在过滤器上寻找“零点”,我认为我应该专注于仅在用户应用过滤器时才应用过滤器,并尝试找到一个与没有过滤器的图像外观接近的良好起点滑块上的初始值。

    【讨论】:

    • 对基本框架有用的补充是每个过滤器上的直通开关,它允许您打开或关闭它而不会将其从过滤器链中剥离出来。这不会提供您正在寻找的逐渐放松,但可以根据需要方便地启用或禁用效果。有几个人提出了这个要求,但我还没有时间添加它。
    • @BradLarson - 这绝对是一种奢侈。即便如此,GPUImage 还是比 CoreImage 方便得多。在 CoreImage 上,每次更改过滤器的值时都必须继续附加过滤器。再次感谢您的出色工作!
    猜你喜欢
    • 2013-01-05
    • 2013-12-18
    • 2011-06-07
    • 2018-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多