天天看点

Android截屏并对图片做高斯模糊处理

这几天项目中需要模仿一下iOS版本的微博菜单弹出界面,如下图:

[img]http://dl2.iteye.com/upload/attachment/0106/9193/c74ca419-1c7c-3579-8a80-f831104e9f96.jpg[/img]

用微博的同学都知道这个效果吧,这篇文章先实现模糊效果,进入、退出动画后面文章分析;

一、说一下实现思路,很简单的:

1、截图:就是获取我们app得截图

获取我们Activity得根view即DecorView,关于DecorView,sdk里面是这么说明的:

就是说获取最顶层的window,可以添加到window manager里面;

拿到view之后可以调用view的getDrawingCache方法获取bitmap截图;

2、对图片做高斯模糊;

高斯模糊在Photoshop里面用的比较多,可以用来去痘痘。

大致原理是:对指定像素和其周围像素进行加权平均来得到最终结果,使用高斯分布作为滤波器。

这儿可以了解详细的算法原理:http://www.ruanyifeng.com/blog/2012/11/gaussian_blur.html

二、代码实现:

代码比较简单,我自己加了注释贴出来了:

我这里用了外国开源项目中的一个Java算法,地址:https://github.com/paveldudka/blurring

如果用C/C++实现jni调用,效果会高一些,可以参考:https://github.com/qiujuer/ImageBlurring/blob/master/README-ZH.md

最后来一张屌丝做demo专业效果图:

[img]http://dl2.iteye.com/upload/attachment/0106/7950/3e1cebb4-fcb4-3c6e-bd64-7a56b63187ac.png[/img]

[img]http://dl2.iteye.com/upload/attachment/0106/7954/5a629564-9e38-34b8-ba27-4beed1b03931.png[/img]