Android RenderScript
更新日期:
最近公司需要实现对话框背景模糊效果,在网上找了很多资料,其中,这篇文章http://blog.jobbole.com/63894/给了我很大启发,这里感谢作者的分享精神(有一点要在这里说一下,在作者的两种模糊算法性能上,我的测试结果与作者相反,不知道是不是Android新版本上的RenderScript做了许多优化)。Android自带的API中,其实已经有很成熟的接口可以实现模糊效果,也就是本文要谈的RenderScript。首先申明一点:RenderScript不仅仅能实现模糊效果,它还能做许多图片处理方面的效果。
RenderScript是什么?
RenderScript是一个能高性能执行密集计算的Android框架,这个框架能利用硬件的多核实现平行计算,在以下这三个方面非常有用: image processing, computational photography, or computer vision。更多信息参见:http://developer.android.com/guide/topics/renderscript/compute.html。
RenderScript有哪些类?
RenderScript:此类负责RenderScript框架的初始化,资源管理和卸载。并且,此类是RenderScript框架的入口。相当于计算引擎。
Allocation:此类是数据存储类。RenderScript计算的数据取自Allocation,并且计算所得数据存于Allocation。
ScriptIntrinsic:这是所有功能类的基类。具体某一方面功能的类都继承自它。比如:实现模糊效果的类ScriptIntrinsicBlur。
如何实现各种效果?
这里拿实现图片的模糊效果举例,下面是实现图片模糊效果的实例代码,代码返回的结果就是已被模糊的图片.
1 2 3 4 5 6 7 8 9 10 | public Bitmap blur(Context c, Bitmap overlay) { RenderScript rs = RenderScript.create(c); Allocation overlayAlloc = Allocation.createFromBitmap(rs, overlay); ScriptIntrinsicBlur blur = ScriptIntrinsicBlur.create(rs, overlayAlloc.getElement()); blur.setInput(overlayAlloc); blur.setRadius(radius); blur.forEach(overlayAlloc); overlayAlloc.copyTo(overlay); return overlay; } |
我这里有完整的图片模糊效果demo,如果需要,请邮件我:kongyouji@gmail.com.