我想在iOS上做一个闪耀效果,看起来像这样
我在OpenCV中找到了径向模糊算法(https://stackoverflow.com/a/13699826/6545468) ,结果不太令人满意
光束是"离散的",最终结果取决于remap
(缩放)的迭代,这是耗时的。
我还发现了一些OpenGL着色器,只是类似的实现。
那么,有没有办法在iOS App中实现After Effects CC Radial Fast Blur(流畅而快速)?
答案 0 :(得分:0)
查看顶部图像我会说你无法在普通图像上快速做到这一点。虽然这实际上取决于图像大小和“快速”的定义,但我们可以说,在尺寸为1024x1024的图像上将其绘制在1秒以内将是一个挑战。
对于一般图像,您将有2个程序:
首先是将褪色的图像browserControl.Navigate("javascript:void(funcion())");
重绘到画布,其中N
是最大效果偏移所具有的像素数。在顶部图像上意味着疯狂的200次重绘。如果您有一些openGL系统,您可以尝试测试绘制这么多样本所需的时间(没有任何影响,只需重绘为纹理),如果您接近所需的结果,您可以尝试实现实际的逻辑。
第二个是获取每个片段(像素)的周围相关样本,这是高斯模糊最常用的过程。此过程通常使用7x7到11x11范围内的像素矩阵,并且仍然是一个缓慢而繁重的操作,并且在大图像上效果不是很模糊。在你的情况下,我们再次看到大约200x200的样品,这是一个完全NO-NO,我甚至都不打算尝试它。
如果您尝试将两个程序结合起来,事情可能会变得有趣。您可以尝试使用第二个过程模糊输入图像,这将有效地将对象放大几个像素。然后,您可以(仅用于光泽)使用第一个过程重绘模糊图像,减少样本数量。例如,如果模糊的大小约为5个像素,那么您可以将重绘次数减少2-3次,这可能会提高性能。虽然这个过程不会像你所拥有的图像那样清晰,但是你很幸运:你发布的第二张图片已经完全符合测试要求。只需创建您正在使用的图像的模糊版本,并测试需要多少样本才能获得良好的结果。
仍然有很多可能的优化可能会影响效果的质量,也可能不会影响效果的质量。如果您正在进行高斯模糊,通常可以安全地对图像进行下采样。每个维度2的比例将碎片的数量减少4并且肯定要尝试。我会尝试以下方法:
如果您要做其中任何一项,请确保跟踪性能。完成后,如果你分享结果(即使你失败了)也会很好。