我正在使用出色的GPUImage来模糊视图(https://github.com/BradLarson/GPUImage)

但是,似乎前几次我模糊了视图,这确实很慢。然后经过几次模糊处理后,速度会更快。

为什么会这样,并且有某种方法可以预加载GPUImage框架,使其始终保持快速运行?

谢谢

    GPUImageiOSBlurFilter *blurFilter = [GPUImageiOSBlurFilter new];
    blurFilter.blurRadiusInPixels = 1;
    blurFilter.saturation = 1.2;
    blurFilter.downsampling = 4.0f;
    blurredImage = [blurFilter imageByFilteringImage:blurredImage];

最佳答案

给定过滤器的首次使用会略有滞后,因为框架必须编译用于该过滤器的着色器。然后,将这些着色器缓存起来,以备后用。特别是模糊会表现出来,因为它们的着色器是针对您使用的每个模糊半径生成的(出于性能原因,在视频中重复使用时等)。

也就是说,请确保您绝对需要使用以上代码中的UIImages。 -imageByFilteringImage:并不总是最快的方法,因为它必须获取一个UIImage,在幕后生成GPUImagePicture,将该图像作为纹理上传,处理该图像,然后抓取字节并从中重新创建UIImage。

如果您想显示更多实时信息以调整图像并在屏幕上显示预览,最好还是手动创建GPUImagePicture并将输出发送到GPUImageView,并在每次更改过滤器值时进行更新。

另外,不要在模拟器中进行任何性能测试。由于GPU某些部分的软件仿真,它表现出怪异的行为,而且我在其中进行处理时看到了奇怪的初始延迟。该框架的本机Mac版本中不存在此功能,只是模拟器的古怪之处。

关于ios - GPUImage较慢,第一次模糊,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24445645/

10-14 21:22