我正在尝试构建用于录制和播放视频的UI。 我正在使用GPUImage框架,并希望将掩码过滤器和GPUImageiOSBlurFilter应用于相机。
目标:
我正在努力设置一切,以便我的输入(相机)在圆圈中未经过滤,但模糊滤镜被屏蔽在中心周围并应用于相机输出。
当我构建这样的链时:
[_camera addTarget:_maskFilter];
[_maskPicture processImage];
[_maskPicture addTarget:_maskFilter];
[_maskFilter addTarget:_blurFilter];
[_blurFilter addTarget:_screen];
模糊滤镜会模糊视图中的所有内容,并且除了中心以外,所有模板都会截断视频。 我的蒙版图像是一个带有白色圆圈的黑色矩形。
结果:
我如何构建一系列过滤器来帮助我实现上图中的UI - 我正在寻找一个方向,我应该去哪个方向。我目前正在查看GPUImageFilterGroups和视频缓冲区,尝试围绕某些过滤器“路由”我的输入部分,但我无法找到资源。
答案 0 :(得分:1)
通过修改GPUImageGaussianSelectiveBlurFilter,您可以相当轻松地完成此操作。
获取该过滤器的代码并根据它创建一个新的过滤器。在新的过滤器中,将GPUImageGaussianBlurFilter替换为GPUImageiOSBlurFilter。在片段着色器中,在最终sharpImageColor
命令中交换blurredImageColor
和mix()
。这应该是复制这种效果。
GPUImageGaussianSelectiveBlurFilter是一个过滤器组,用于屏蔽和模糊圆圈内的事物,并且您希望将其反转并使用更强大的GPUImageiOSBlurFilter,因此上述修改将执行此操作。这比尝试将掩码应用为单独的过滤器更具性能,并且应该足够简单以实现。