Android实现图片的高斯模糊(两种方式)

作者:mq2856992713 时间:2023-01-24 05:42:48 

在市面上很多的APP都使用了对图片作模糊化处理后作为背景的效果,来使得整个页面更具有整体感。如下就是网易云音乐的音乐播放页面:

Android实现图片的高斯模糊(两种方式)

很明显这个页面的背景是由中间的小图片模糊化后而来的。最常用的模糊化处理就是高斯模糊。

高斯模糊的几种实现方式:

(1)RenderScript

RenderScript是Google在Android 3.0(API 11)中引入的一个高性能图片处理框架。

使用RenderScriprt实现高斯模糊:

首先在在build.gradle的defaultConfig中添加RenderScript的使用配置

renderscriptTargetApi 24
renderscriptSupportModeEnabled true

renderscriptTargetApi :

指定要生成的字节码版本。我们(Goole官方)建议您将此值设置为最低API级别能够提供所有的功能,你使用和设置renderscriptSupportModeEnabled为true。此设置的有效值是从11到
最近发布的API级别的任何整数值。

renderscriptSupportModeEnabled:

指定生成的字节码应该回落到一个兼容的版本,如果运行的设备不支持目标版本。

下面就是使用RenderScriprt实现高斯模糊的方法:


public static Bitmap blurBitmap(Context context, Bitmap bitmap) {
//用需要创建高斯模糊bitmap创建一个空的bitmap
Bitmap outBitmap = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Bitmap.Config.ARGB_8888);
// 初始化Renderscript,该类提供了RenderScript context,创建其他RS类之前必须先创建这个类,其控制RenderScript的初始化,资源管理及释放
RenderScript rs = RenderScript.create(context);
// 创建高斯模糊对象
ScriptIntrinsicBlur blurScript = ScriptIntrinsicBlur.create(rs, Element.U8_4(rs));
// 创建Allocations,此类是将数据传递给RenderScript内核的主要方 法,并制定一个后备类型存储给定类型
Allocation allIn = Allocation.createFromBitmap(rs, bitmap);
Allocation allOut = Allocation.createFromBitmap(rs, outBitmap);
//设定模糊度(注:Radius最大只能设置25.f)
blurScript.setRadius(15.f);
// Perform the Renderscript
blurScript.setInput(allIn);
blurScript.forEach(allOut);
// Copy the final bitmap created by the out Allocation to the outBitmap
allOut.copyTo(outBitmap);
// recycle the original bitmap
// bitmap.recycle();
// After finishing everything, we destroy the Renderscript.
rs.destroy();
return outBitmap;
}

(2)Glide实现高斯模糊

Glide是一个比较强大也是比较常用的一个图片加载库,Glide中的Transformations用于在图片显示前对图片进行处理。glide-transformations 这个库为Glide提供了多种多样的 Transformations实
现,其中就包括高斯模糊的实现BlurTransformation


compile 'com.github.bumptech.glide:glide:3.7.0'
compile 'jp.wasabeef:glide-transformations:2.0.1'

 通过这两个库的结合使用,就可以使用其中的BlurTransformation实现图片的高斯模糊


Glide.with(context).load(R.drawable.defalut_photo).bitmapTransform(new BlurTransformation(context, radius)).into(mImageView);

其中radius的取值范围是1-25,radius越大,模糊度越高。

以上所述是小编个大家介绍的Android实现图片的高斯模糊,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

标签:android,图片,高斯模糊
0
投稿

猜你喜欢

  • C#定时关闭窗体实例

    2023-07-09 22:53:25
  • C#中Dispose和Finalize方法使用介绍

    2022-09-10 16:05:21
  • SpringBoot实现埋点监控

    2022-11-27 06:32:07
  • C#画笔使用复合数组绘制单个矩形的方法

    2022-03-20 01:41:09
  • dubbo入门指南及demo实例详解

    2023-08-24 04:49:07
  • android实现图片反转效果

    2022-09-24 20:48:11
  • 详解RestTemplate的三种使用方式

    2023-06-07 16:30:45
  • 基于C语言string函数的详解

    2023-06-28 05:33:25
  • 详解Eclipse 字体、字号的设置、最佳字体推荐

    2023-11-26 12:25:32
  • springcloud干货之服务注册与发现(Eureka)

    2021-07-08 11:04:23
  • Java之SpringBoot自定义配置与整合Druid

    2022-09-28 06:23:06
  • Android编程简单设置ListView分割线的方法

    2021-07-21 20:24:33
  • Java 8 动态类型语言Lambda表达式实现原理解析

    2023-08-05 09:04:25
  • C++对string进行大小写转换操作方法

    2023-11-03 04:32:59
  • java HashMap通过value反查key的代码示例

    2022-06-07 08:50:55
  • Java使用substring()截取(提取)子字符串

    2023-09-29 17:02:04
  • IDEA实现添加 前进后退 到工具栏的操作

    2021-08-30 21:34:48
  • Java8 中的ParallelStream

    2022-09-07 19:00:23
  • 基于String和List<String>间的相互转换方式

    2022-09-25 15:52:21
  • Android 8.1 Launcher3实现动态指针时钟功能

    2023-09-27 18:53:09
  • asp之家 软件编程 m.aspxhome.com