图片模糊解决方案
- JAVA算法
- JNI调用C算法
- RenderScript
最近在项目中用到了图片模糊,模糊方案用了开源的JAVA算法FastBlur,其实效果并不是很好,有两个明显的缺陷,一个是临时内存过大,另一个是耗时长。因为这两个坎,使得模糊半径不能太大,效果不是很好(模糊半径越大,模糊效果越好,但计算量也会增大)。在我的映像中,这种计算量较大的算法用JNI是比较好的,c在计算速度上有天然的优势,朝着这个目的我在网上找开源的c语言模糊算法,没想到还收货了一个惊喜,那就是RenderScript。
JAVA算法
我选的模糊半径是25,1080P的图片,用项目中的算法进行测试.(项目中的模糊半径是10).
3864毫秒。
JNI调用C算法
这种办法的效率确实高,但缺点就是麻烦,还要编写makefile文件和JNI接口,还要用NDK编译c的源文件。还好网上已经有开源的NDK项目,只要少加修改就可以了。
需要注意的是这里对Bitmap进行了处理,所以要依赖 ljnigraphics模块。
运行结果不出所料,同样的图片,