首先,衷心感谢 Brad Larson 和贡献者提供了一个很棒的库。
https://github.com/BradLarson/GPUImage
...尝试构建一个捕获过滤后的静止图像的基本工具。我的主视图是 GPUImageView - 我想填充可见屏幕。
我想在具有自己的过滤器链和预览过滤器的主流顶部添加一个裁剪过滤器,并仅捕获该子部分。它看起来像一个实时的、未过滤的背景流,其中有一个应用了过滤器的小节。(希望这是有道理的。)
我无法找出链接过滤器和视图的正确方法来实现这一点,或者如果它甚至可能的话。
我已经尝试向相机链添加两个视图——背景上的一个较小的视图,并且具有所需的过滤器。这适用于预览,但是当我尝试捕获它(使用较小视图上的当前过滤器)时,我不断收到内存异常。我不确定,但似乎 StillImageCamera 不支持此配置?这个配置看起来像:
Camera
-> Background GPUImageView
-> CropFilter - (desired inner rect)
--> various other filters
---> Inner GPUImageView (super imposed on top of background view)
我尝试过的另一种方法是只拥有一个 GPUImageView 但在过滤器链中的某个点分叉。一个分支指向渲染的 GPUImageView,另一个指向我想要捕获的特定过滤视图。这似乎是正确的策略,我可以在不崩溃的情况下捕获所需的过滤器链,但捕获图像总是返回空白。它还有一个缺点,即我无法在如上所述的子矩形中显示过滤后的视图。
这个配置看起来像:
Camera
-> Outer CropFilter (0,0,1,1) -- just used in order to have a base filter
--> Background GPUImageView
-> Inner CropFilter - (desired inner rect)
--> various other filters
基本上,我想:
1)在背景 GPUImageView 上显示/预览内部裁剪过滤器链
2)捕获该内部裁剪过滤器链的静止图像
希望获得有关是否以及如何实现这一目标的任何指导。