浅析Android高斯模糊实现方案
时间:2022-07-27
本文章向大家介绍浅析Android高斯模糊实现方案,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
1、使用Glide
Glide.with(this)
.load(service.getImageUri())
.dontAnimate()
.error(R.drawable.error_img)
// 设置高斯模糊
.bitmapTransform(new BlurTransformation(this, 14, 3))
.into(imageview);
适用场景:动态配置的背景图片
2、对图片高斯模糊,需要先将图片转成bitmap对象
mport android.annotation.TargetApi;
import android.content.Context;
import android.graphics.Bitmap;
import android.os.Build;
import android.renderscript.Allocation;
import android.renderscript.Element;
import android.renderscript.RenderScript;
import android.renderscript.ScriptIntrinsicBlur;
public class BlurBitmapUtil {
// 图片缩放比例(即模糊度)
private static final float BITMAP_SCALE = 0.4f;
/**
* @param context 上下文对象
* @param image 需要模糊的图片
* @return 模糊处理后的Bitmap
*/
@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
public static Bitmap blurBitmap(Context context, Bitmap image, float blurRadius) {
// 计算图片缩小后的长宽
int width = Math.round(image.getWidth() * BITMAP_SCALE);
int height = Math.round(image.getHeight() * BITMAP_SCALE);
// 将缩小后的图片做为预渲染的图片
Bitmap inputBitmap = Bitmap.createScaledBitmap(image, width, height, false);
// 创建一张渲染后的输出图片
Bitmap outputBitmap = Bitmap.createBitmap(inputBitmap);
// 创建RenderScript内核对象
RenderScript rs = RenderScript.create(context);
// 创建一个模糊效果的RenderScript的工具对象
ScriptIntrinsicBlur blurScript = ScriptIntrinsicBlur.create(rs, Element.U8_4(rs));
// 由于RenderScript并没有使用VM来分配内存,所以需要使用Allocation类来创建和分配内存空间
// 创建Allocation对象的时候其实内存是空的,需要使用copyTo()将数据填充进去
Allocation tmpIn = Allocation.createFromBitmap(rs, inputBitmap);
Allocation tmpOut = Allocation.createFromBitmap(rs, outputBitmap);
// 设置渲染的模糊程度, 25f是最大模糊度
blurScript.setRadius(blurRadius);
// 设置blurScript对象的输入内存
blurScript.setInput(tmpIn);
// 将输出数据保存到输出内存中
blurScript.forEach(tmpOut);
// 将数据填充到Allocation中
tmpOut.copyTo(outputBitmap);
return outputBitmap;
}
}
不推荐:使用bitmap,频繁操作的话比较耗性能。
3、使用高斯模糊遮罩,可以对指定区域进行模糊,不需要处理单张图片(推荐!!)
推荐一个github上的项目,亲测有效。https://github.com/mmin18/RealtimeBlurView
<com.github.mmin18.widget.RealtimeBlurView
android:id="@+id/blurview"
android:layout_width="match_parent"
android:layout_height="210dp"
android:visibility="gone"
app:realtimeBlurRadius="5dp"
app:realtimeOverlayColor="#00000000" /
app:realtimeOverlayColor=”#00000000″,这里设置成透明色,效果就如同直接对图片进行高斯模糊。
总结
以上所述是小编给大家介绍的Android高斯模糊实现方案,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对ZaLou.Cn网站的支持! 如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
- 【自然框架】之“元数据”的威力
- 周末娱乐:讲真,这才是我所说黑客的定义!
- 数据访问函数库的使用方法(一)——添加修改数据
- 数据访问函数库的使用方法(二)—— 获取记录集和使用事务的方法
- “数据访问函数库”(DataAccessLibrary for .net2.0 )源代码下载 09.06.15更新
- 数据访问函数库 for ado.net2.0
- 【问底】静行:FastJSON实现详解
- 分页解决方案 —— GridView + QuickPager + QuickPager_SQL + DataAccessLibrary + 数据库
- 使用接口来统一控件的取值、赋值和初始化
- 【自然框架】之通用权限的Demo(二):添加人员、添加账户、添加角色里面的账户以及列表的权限验证
- 我自己写的一个分页控件(源码和演示代码)PostBack分页版 for vs2003、SQL Server
- 分页控件之分页算法 —— for SQL Server 版。
- 【问底】王帅:深入PHP内核(一)——弱类型变量原理探究
- 一次对个人服务器入侵事件的调查
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- 小程序上传多张图片到springboot后台,返回可供访问的图片链接
- AndroidStudio Gradle基于友盟的多渠道打包方法
- Android开发之全屏与非全屏的切换设置方法小结
- Android使用GridView实现日历的方法
- Android控件AppWidgetProvider使用方法详解
- R语言使用链梯法Chain Ladder和泊松定律模拟和预测未来赔款数据
- Android ViewPager实现左右滑动的实例
- R语言通过伽玛与对数正态分布假设下的广义线性模型对大额索赔进行评估预测
- R语言中回归模型预测的不同类型置信区间应用比较分析
- 第06期:Prometheus 存储
- 新特性解读 | 数组范围遍历功能
- 技术分享 | MySQL 内存管理初探
- 新特性解读 | 窗口函数的适用场景
- Android自定义View 仿QQ侧滑菜单的实现代码
- Android view随触碰滑动效果