将GPUImage滤镜应用于UIView

4
我有一个问题。我需要将像素化或模糊这样的过滤器应用于整个UIView,就像eBay iPad应用程序一样。
我想使用GPUImage,但是我不知道该怎么做。有没有一种方法可以直接将过滤器应用于GPUImageView,而不需要传递UIImage?
主要问题是在iPad 3上截取大型UIView的屏幕截图太昂贵了(UIWindow抓取需要2秒)。因此,完美的解决方案是直接将过滤器应用于视图,就像eBay应用程序一样,但是...如何实现呢?
谢谢所有人!
3个回答

8
要将视图引入GPUImage中,您可以使用GPUImageUIElement源,它以UIView或CALayer作为输入。在FilterShowcase示例应用程序中有一个示例。
这确实依赖于底层CALayer的-renderInContext:方法,对于重绘视图可能会很昂贵。但是,如果视图是静态的,您只需要使用此更新一次,生成的图像将被缓存在GPU上作为纹理。之后应用于其上的滤镜操作将非常快速。

谢谢!最终我用GPUImage找到了解决方案! - Dimitri Dimix Giani
嗨,Brad,我似乎无法让我的视图正常工作。我还在StackOverflow上创建了一个问题,如果你能看一下就太好了!http://stackoverflow.com/questions/18353298/using-gpuimage-to-filter-a-view-live - simonthumper

1

1
但是文档中说:此属性不支持iOS上的图层。 - Dimitri Dimix Giani
那确实是这样,但我记得它是在iOS5中实现的。如果我查看我的当前文档集,它说:“此属性依赖于Core Image及其滤镜的存在。在iOS中,Core Image仅在iOS 5及更高版本中可用。” - Tark

0

也许这对你有用?我没有试过,但在一篇帖子中读到过:

StackBlur

哦,抱歉,我再次阅读了你的帖子,发现这个扩展是关于模糊UIImage的,而你说这不是你想要的东西... 无论如何,如果有人搜索模糊图像,我还是会把它留在这里。 对不起 :(


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