Android开发——高斯模糊效果的简单实现
2017-01-17 18:00
501 查看
0. 前言
在Android开发中,经常在音乐软件中看到高斯模糊效果。
在找遍了所有高斯模糊的算法代码后,发现stackblur的Java实现是最快的。效果如下所示。
1. 高斯模糊效果实现Bitmap overlay;
JavaBlurProcess process = new JavaBlurProcess();
private void blur(Bitmap srcBitmap, ImageView view, float radius) {
int scaleFactor = 8;
if (overlay != null){
overlay.recycle();
}
overlay = Bitmap.createScaledBitmap(srcBitmap,
srcBitmap.getWidth()/scaleFactor, srcBitmap.getHeight()/scaleFactor, false);
overlay = process.blur(overlay, radius);
view.setImageBitmap(overlay);
}
核心代码如上所示,这里调用了JavaBlurProcess工具类,第十行调用该类的blur()方法,传入经过处理过的源bitmap和模糊半径radius,再将返回的bitmap设置给第二个ImageView。radius越小,则图片越清晰,在本例中也设置为了8,是调参经验的结果。
这里调用了createScaledBitmap()对源bitmap进行了减少像素点个数的预处理,如果不处理的话,高斯模糊的效率会因为像素点过多而产生效率的问题,但是设置的过大会产生明显的像素块,这里设置为8倍缩放。和上面的模糊半径一样也是通过调参得出的经验结果。最后是JavaBlurProcess工具类有300多行,这里就不贴了,感兴趣的可以去研读该工具类的源码。
因为是Java实现,还是比较容易使用的。源码地址点击下载。
在Android开发中,经常在音乐软件中看到高斯模糊效果。
在找遍了所有高斯模糊的算法代码后,发现stackblur的Java实现是最快的。效果如下所示。
1. 高斯模糊效果实现Bitmap overlay;
JavaBlurProcess process = new JavaBlurProcess();
private void blur(Bitmap srcBitmap, ImageView view, float radius) {
int scaleFactor = 8;
if (overlay != null){
overlay.recycle();
}
overlay = Bitmap.createScaledBitmap(srcBitmap,
srcBitmap.getWidth()/scaleFactor, srcBitmap.getHeight()/scaleFactor, false);
overlay = process.blur(overlay, radius);
view.setImageBitmap(overlay);
}
核心代码如上所示,这里调用了JavaBlurProcess工具类,第十行调用该类的blur()方法,传入经过处理过的源bitmap和模糊半径radius,再将返回的bitmap设置给第二个ImageView。radius越小,则图片越清晰,在本例中也设置为了8,是调参经验的结果。
这里调用了createScaledBitmap()对源bitmap进行了减少像素点个数的预处理,如果不处理的话,高斯模糊的效率会因为像素点过多而产生效率的问题,但是设置的过大会产生明显的像素块,这里设置为8倍缩放。和上面的模糊半径一样也是通过调参得出的经验结果。最后是JavaBlurProcess工具类有300多行,这里就不贴了,感兴趣的可以去研读该工具类的源码。
因为是Java实现,还是比较容易使用的。源码地址点击下载。
相关文章推荐
- Android开发——高斯模糊效果的简单实现
- Android RenderScript 简单高效实现图片的高斯模糊效果
- Android RenderScript 简单高效实现图片的高斯模糊效果
- android游戏开发框架libgdx的使用(十八)—简单的AVG游戏效果实现
- Android开发之实现最简单最酷炫的3D图片浏览效果(二)
- Android开发之实现最简单最酷炫的3D图片浏览效果(一)
- 【Android】Android开发实现进度条效果,SeekBar的简单使用。音量,音乐播放进度,视频播放进度等
- android游戏开发框架libgdx的使用(十八)—简单的AVG游戏效果实现
- [置顶] 【Android】Android开发实现进度条效果,SeekBar的简单使用。音量,音乐播放进度,视频播放进度等
- 【Android游戏开发十六】Android Gesture之【触摸屏手势识别】操作!利用触摸屏手势实现一个简单切换图片的功能!
- 实现Android半透明Menu效果的开发实例
- 16—【Android游戏开发十六】Android Gesture之【触摸屏手势识别】操作!利用触摸屏手势实现一个简单切换图片的功能
- Android实现简单的分页效果
- Android应用开发中半透明效果实现方案
- Android开发窗口实现半透明效果
- Android动画效果Animation之Tween实现简单动画
- Android开发实例:如何实现翻书效果
- How:android开发中实现TextView垂直滚屏效果的方法
- android游戏开发框架libgdx的使用(二十三)—使用Universal Tween Engine实现动画效果
- Android开发——实现点击图片切换效果