【问题标题】:Apply GPUImage filter to a UIView将 GPUImage 过滤器应用于 UIView
【发布时间】:2012-12-07 17:46:36
【问题描述】:

我有问题。我需要将Pixelate or Blur 之类的过滤器应用于整个UIView。 喜欢eBay iPad 应用程序。

我想使用GPUImage,但我不知道该怎么做。 有一种方法可以直接将过滤器应用于GPUImageView,而无需传递UIImage

主要问题是在iPad 3rd 上截取大的UIView 的屏幕截图成本很高(UIWindow 抓取需要 2 秒)。所以完美的解决方案是直接对视图应用过滤器,就像 eBay 应用一样,但是.. 怎么样?

谢谢大家!

【问题讨论】:

    标签: ios filter effect gpuimage


    【解决方案1】:

    要将视图拉入 GPUImage,您可以使用 GPUImageUIElement 源,该源将 UIView 或 CALayer 作为输入。 FilterShowcase 示例应用程序中有一个示例。

    这确实依赖于底层 CALayer 的 -renderInContext: 方法,这对于重绘视图来说可能代价高昂。但是,如果视图是静态的,您只需使用此更新一次,生成的图像将作为纹理缓存在 GPU 上。在此之后应用到它的过滤器操作将非常快。

    【讨论】:

    • 谢谢!终于用 GPUImage 找到了解决方案!
    • 嗨,布拉德,我的 View 似乎无法使用它。我还在 StackOverflow 上创建了一个问题,如果你能看一下就太好了! stackoverflow.com/questions/18353298/…
    【解决方案2】:

    您可以通过将CIFilters 应用于您的视图layer.filters 属性来实现您想要的外观。查看文档了解更多信息:

    https://developer.apple.com/library/mac/#documentation/graphicsimaging/reference/CALayer_class/Introduction/Introduction.html

    【讨论】:

    • 但文档说:iOS 中的图层不支持此属性。
    • 确实是这样,但我记得它是在 iOS5 中实现的。如果我查看我当前的文档集,它会说:“此属性依赖于 Core Image 及其过滤器的存在。在 iOS 中,Core Image 仅在 iOS 5 及更高版本中可用。”
    【解决方案3】:

    也许这适合你?没试过,但在帖子中读过一次:

    StackBlur

    抱歉,我再次阅读了你的帖子,这个扩展是关于模糊 UIImage,你说这是你不想要的...... 好吧,如果人们去谷歌搜索模糊图像,无论如何我都会把它留在这里。 对不起:(

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-12-16
      • 1970-01-01
      • 2014-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多