果然前人栽树,后人乘凉.

google搜索”Android实现动态高斯模糊效果”发现2016年转载的博客居多(或者试试英文搜索,可能时间会提前很多.),看来2016年想实现这种效果的产品多; 2014年是图片高斯模糊2015年有性能对比2016年火的就是动态高斯模糊了,不知道对于性能的影响有多大,消耗内存占用资源得有个数据show一下,当然在比较性能之前,应该先实现效果.

待都尝试运行过后再弄数据.

Android实现动态高斯模糊效果 2016-8-5 脚本之家 转载.
这篇使用的是support v8库的RenderScript进行高斯模糊,文中提到的动态高斯模糊改变的不是高斯模糊的radius参数,而是通过FrameLayout ,在下层放一个模糊过的图片,上面该一层原图,通过seekbar动态调整上层原图的alpha值,待上层完全透明后,就露出了下层的模糊过的图片,用户感受的效果是逐渐模糊,实际上是重叠效果,具体看原文.

高斯模糊关键代码:

private Bitmap blur(Bitmap bitmap, float radius) {Bitmap output = Bitmap.createBitmap(bitmap);RenderScript rs = RenderScript.create(getActivity());// 构建一个RenderScript对象ScriptIntrinsicBlur gaussianBlur = ScriptIntrinsicBlur.create(rs, Element.U8_4(rs)); // 创建高斯模糊脚本Allocation allIn = Allocation.createFromBitmap(rs, bitmap);//创建用于输入的脚本类型Allocation allOut = Allocation.createFromBitmap(rs, output); // 创建用于输出的脚本类型gaussianBlur.setRadius(radius); // 设置模糊半径,范围0f<radius<=25fgaussianBlur.setInput(allIn); // 设置输入脚本类型gaussianBlur.forEach(allOut); // 执行高斯模糊算法,并将结果填入输出脚本类型中allOut.copyTo(output); // 将输出内存编码为Bitmap,图片大小必须注意rs.destroy(); // 关闭RenderScript对象,API>=23则使用rs.releaseAllContexts()return output;
}

参考:
blurBitmap.java
https://gist.github.com/Mariuxtheone/903c35b4927c0df18cf8

public Bitmap blurBitmap(Bitmap bitmap){//Let's create an empty bitmap with the same size of the bitmap we want to blurBitmap outBitmap = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Config.ARGB_8888);//Instantiate a new RenderscriptRenderScript rs = RenderScript.create(getApplicationContext());//Create an Intrinsic Blur Script using the RenderscriptScriptIntrinsicBlur blurScript = ScriptIntrinsicBlur.create(rs, Element.U8_4(rs));//Create the Allocations (in/out) with the Renderscript and the in/out bitmapsAllocation allIn = Allocation.createFromBitmap(rs, bitmap);Allocation allOut = Allocation.createFromBitmap(rs, outBitmap);//Set the radius of the blurblurScript.setRadius(25.f);//Perform the RenderscriptblurScript.setInput(allIn);blurScript.forEach(allOut);//Copy the final bitmap created by the out Allocation to the outBitmapallOut.copyTo(outBitmap);//recycle the original bitmapbitmap.recycle();//After finishing everything, we destroy the Renderscript.rs.destroy();return outBitmap;
}

使用RenderScript是有条件的,
* Android SDK Tools 版本必须大于等于22.2
* Android SDK Build-tools 版本必须大于等于18.1.0
这种方法的优势是:
RenderScript这个工具会充分发挥设备的计算能力(CPU和GPU)来进行计算,并且是使用C99衍生语言进行脚本编写的,
* 对于高质量图片或变化较多的需求相较于Java性能是大大的提升。
* 高斯模糊实现 -> 动态高斯模糊实现.

Android 实现毛玻璃效果 来自某个个人博客 blog.hwangjr.com,2015-07-10

利用V 8包提供Render接口实现 部分内容同文献一,并指出文献一方法的弊端:
这种方法直接利用Android系统提供的机制,从代码实现上是最简单也相对高效的实现。在此过程中遇到的很现实的问题是,直接使用ScriptIntrinsicBlur不能得到模糊程度较高的图片:

(1)当模糊半径 (radius)变大后会直接出现计算性能问题。
(2)ScriptIntrinsicBlur脚本模糊半径不能大于25。

考虑到高斯模糊是计算周边像素平均值,在模糊程度很高的情况下,逐点计算平均值从显示效果上优势并不明显。可以通过将图片压缩成小图,计算小图的高斯模糊,再将小图放大的方法来模拟大半径高斯模糊的效果。这里的FastBlur正是很多项目中实际使用的。FastBlur在2014年及更前就已出现。

这种方式通过在Java层中直接实现高斯模糊算法。在大模糊半径和大图片情况下,性能会出现问题。基本目前只作为对低版本Android客户端的兼容性方案使用。

第二个方式通过直接计算高斯并直接在视图画布上实现BlurLinearLayout,用了全局监听不断去截取屏幕截图,再十分之一倍率缩小。
这种方式模糊的是layout本身,不是里面包含的imageview.

其他开源库,还没看。。
kikoso/android-stackblur

OpenGL实现(消耗性能,不推荐)

“ 无论从效果和实时性来讲都是最好的,但需要根据需求来看是否真的有这样的实时性要求。这种方式从显示效果上会优于第一种方法,甚至可以达到渐变的效果,但这些计算都是以耗电作为代价的。作为Launcher这种系统级别的应用,在显示效果差异并不明显的情况下,建议综合考虑耗电量,以及内存和计算性能的消耗。 ”

Android 5.0 下毛玻璃(磨砂)效果如何实现?, 知乎问答,经典总结,2014-12

截取些真心不错的回答:

作者:郑鑫
链接:https://www.zhihu.com/question/27017363/answer/35730275
来源:知乎
著作权归作者所有,转载请联系作者获得授权。

这个问题要分两部分来看。
第一是模糊算法,主要目前有两种方案:
(1)借助Renderscript做高斯模糊,这个本质上是做了个卷积计算。
(2)用jni实现StackBlur 算法对图片进行模糊处理,这个可以看下源码,相较于高斯模糊,计算量小了很多。
两种方案都可以进行对Bitmap对象的模糊处理,但当模糊半径增大时,StackBlur能够保持较好的性能,且不受Renderscript半径25px的限制。这两种方案都可以通过对原图进行压缩采样方式优化。至于模糊结果,可以看实际效果,个人认为均可满足需求。
第二是使用场景,同样分为两种:
(1)非实时处理:比如说用做背景虚化,这种场合下对性能要求不是太苛刻,只要保证在非主线程处理好图片,之后填充即可。上面两种方案都可满足需求。
下面是stackblur的一个android实现
kikoso/android-stackblur · GitHub
(2)实时处理:比如说需要在滚动的ListView或者ScrollView上添加毛玻璃遮罩。由于待虚化的Bitmap不是固定不变的,这就需要我们逐帧处理。这个时候半径如果大的话,Renderscript会出现明显的卡顿,而StackBlur方案在中高端机器上会有不错的表现。
下面是一个比较好的开源的android实现,使用起来比较简单
harism/android_anndblur · GitHub
其原理是自定义容器控件,通过重绘的方式获取自身原本要绘制的bitmap纹理,然后实时处理并填充到自身的背景中,能保证基本的流畅度。注意会除了模糊处理,还会引发多余的绘制操作。铁定会拖慢UI的流畅度。
对于实时毛玻璃效果,建议还是多做测试,毕竟耗费计算资源,甚至可以监控fps设置阈值对特效进行开关。

2016-8 回答

参考链接:

Android:简单靠谱的动态高斯模糊效果

Android 图片模糊 性能总结

android 实时高斯模糊 毛玻璃效果

Android 5.0 下毛玻璃(磨砂)效果如何实现?

segmentfault:
Android高级模糊技术
Android进行高斯模糊的简单实现
使用RenderScript实现高斯模糊(毛玻璃/磨砂)效果

Android毛玻璃(磨砂)效果(静态&动态背景图模糊 收集)相关推荐

  1. vue 项目中使 实现粒子动态 背景图

    在vue中,实现粒子动态背景图的效果 首先安装 插件 npm install vue-particles --save-dev 在main.js 文件中进行引用注册 // 动态粒子 import Vu ...

  2. html制作百度首页的图片不显示,html实现像百度的首页效果一样的背景图(代码)...

    本篇文章给大家带来的内容是关于html实现像百度的首页效果一样的背景图(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 之前在百度知道我提问过这一个问题,后来解决了.不过好多人 ...

  3. html怎么做成多彩背景随心换,html实现像百度的首页效果一样的背景图(代码)...

    本篇文章给大家带来的内容是关于html实现像百度的首页效果一样的背景图(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 之前在百度知道我提问过这一个问题,后来解决了.不过好多人 ...

  4. uniapp小程序painter绘制海报微信头像空白;背景图模糊问题

    一.头像空白问题 网络图片真机显示空白请检查 微信公众平台 服务器域名里面的安全域名有没有添加 微信头像显示空白 请添加 https://thirdwx.qlogo.cn; 添加域名后重新启动项目就可 ...

  5. android 实现磨砂效果_Android 5.0 下毛玻璃(磨砂)效果如何实现?

    刚刚做技术调研,可以给一些优缺点的对比. 目前主流实现毛玻璃效果(高斯模糊)分大致三种方法: 一 利用RenderScript接口 利用现有Android结构,通过RenderScript调用底层接口 ...

  6. Html/Javascript game animated background 游戏动态背景图:卷轴效果(附代码)

    游戏的背景图如果是动态的, 效果会好很多, 最简单的做法是让背景图有一种卷轴效果,即看起来背景图一直是从上往下,或者从右往左移动.以前用python 做过,这里把python 写为Javascript ...

  7. Hexo之静态+动态背景设置

    写在前面 实现背景图更换及平铺,以及引入动态背景(可交互) 静态background设置 打开博客根目录/themes/next/source/css/_custom/custom.styl文件,编辑 ...

  8. JAVA GUI界面动态背景图设计

    在做JAVA项目时我们有时候要用到界面的动态背景,但是对于初学者来说通常会使用普通的IO流来设置背景图片,但这往往会出问题的,要么找不到路径,要么动态背景图片设置不成功(动态图片变成静态图片),下面我 ...

  9. Android开发之Glide设置View背景图的方法

    先看效果图: 看了下效果还可以,虽然此方法在Glide4.1.2版本已过时但是还可以使用 针对Glide4.0以上版本设置View背景图方法如下:Kotlin版本 package com.xiayiy ...

最新文章

  1. windows下python使用fllow扩展持续读取文件的bug
  2. python入门基础代码图-Python入门基础学习一
  3. vue实现鼠标悬浮 显示全部内容
  4. pip工具使用总结以及常用库PIL、freetype的安装
  5. js基础中Null、undefined、NaN、false、0、{}的理解及使用
  6. python自动化_python自动化办公?学这些就够用了
  7. C#datagridView中嵌套控件
  8. 毕业答辩的PPT全攻略(要用)
  9. 锐捷wifi魔盒自动优选服务器,锐捷校园网用python实现自动登录(需要有自己的账号)...
  10. 视频技术系列 - 分析业内数字版权管理DRM技术
  11. RHCE-ansible第二次实验,通过ansible远程yum安装
  12. JavaScript交互式网页设计 • 【第3章 JavaScript浏览器对象模型】
  13. 新数据经济的民主化:科技巨头如何窃取我们的数据以及我们如何夺回控制权
  14. 虚拟机安装时黑屏的解决办法
  15. 中科院大学计算机科学与技术王伟强,李振宇 - 中国科学院大学 - 计算机科学与技术学院...
  16. Fluent速度、压力入口边界条件的设定
  17. 蓝宝石超频软件测试,显卡超频测试_蓝宝石 R9 380X 4G D5 超白金 OC_显卡评测-中关村在线...
  18. 用myeclipse搭建SSH并做一个简单登录页面
  19. Unity Shader 燃烧消融效果(surface表面着色器)
  20. 实用工具:CMD这么有用 附源码

热门文章

  1. 利用gym训练自己的动力学模型
  2. Java中Collections.sort()排序详解
  3. CentOS7安装完毕以后没有ens33网卡解决办法
  4. Win系统安装C4D总是失败的原因 MAXON Cinema 4D C4D 2023中文/英文可以解决这个问题
  5. [PS实用技巧]1px圆角表格制作教程
  6. wps带阴影的边框怎么设置_win7系统设置wps阴影边框的操作方法
  7. 爱奇艺视频精彩度分析算法及应用
  8. 免费直播!真.零基础能学会的前端入门教程,还带实操抖音风格字体特效!
  9. 程序源代码复制到word格式不变
  10. 计算机需要学大学物理吗,计算机系要学大学物理吗?