GPUImage:更暗的iOS 7模糊效果

3
我需要一种可靠、高效的方法来创建iOS 7模糊效果。我已经实现了苹果的WWDC代码(UIImage+ImageEffects)中的applyBlurWithRadius。它实际上非常灵活,还允许更改tintColor,这可以创建一个更暗的模糊效果,就像这样:

darker ios 7 blur

但它依赖于Core Graphics,会降低表视图的滚动性能。然后我看到了BradLarson的GPUImage库,它有一个GPUImageiOSBlurFilter方法,可以复制iOS 7效果,并且比UIImage+ImageEffects快得多,因此在我的情况下似乎更可用。
但问题是,它没有像tintColor这样的任何参数。它会创建白色效果如此处所示。还有其他的GPUImage滤镜,但我不确定是否可以获得我想要的效果。

@LeoNatan 这里有一条评论(https://dev59.com/kWQn5IYBdhLWcg3wLkkd#17048668)说苹果拒绝使用工具栏方法的应用程序。 - Ömer Faruk Almalı
据我所知,苹果拒绝的是将背景层从工具栏中抓出并添加到您的视图中。这是几个聪明的开源模糊视图的情况。但我不明白为什么使用工具栏会导致苹果拒绝。我们的应用程序使用它,但我们没有被移除。 - Léo Natan
看一下 https://github.com/nicklockwood/FXBlurView,它似乎是你需要的。 - limon
1
请查看此答案:@ÖmerFarukAlmalı https://dev59.com/QGQn5IYBdhLWcg3wJ0YO#18142035。即使是苹果公司也承认这是目前的“最佳”解决方案。 - Léo Natan
@LeoNatan 我也看到了那个评论,如果苹果不会拒绝这种方法,我肯定可以使用它。当然,我并不着迷于任何库。我将尝试实现工具栏方法,并将在性能方面进行比较。此外,该问题将继续存在以满足 GPUImage 请求。 - Ömer Faruk Almalı
显示剩余2条评论
1个回答

2

如我在此处的评论中所述,GPUImageiOSBlur过滤器提供的“美白”效果是由于我在该操作的最后一步应用了亮度范围限制。该过滤器本身是一个组合过滤器,其中图像首先被去饱和度并降采样,接着进行高斯模糊,然后在最后一步上采样和亮度范围限制。

这个最后一步是使用我的GPUImageLuminanceRangeFilter完成的,我构建它是为了复制苹果似乎对大多数叠加模糊应用的确切效果。然而他们在其他地方似乎使用了不同的颜色效果,因此要模仿这一点,您需要更改过滤器中的最后一步。

我可能会在日后将其作为用户可以自定义的色彩,但目前您可以根据GPUImageiOSBlurFilter和GPUImageLuminanceRangeFilter创建自己的自定义过滤器,并更改GPUImageLuminanceRangeFilter的实现方式,使最终颜色比通常提供的颜色更暗。您需要尝试修改片段着色器中的值,以看看它产生的效果是否符合您的要求。

其他人已经这样做了,并且效果很好,但是还没有将其作为拉取请求反馈回来。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接