天天看點

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]