You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android的createBlurEffect方法采用哪种模糊算法?如何便捷测试?

Android RenderEffect.createBlurEffect 算法及测试方法

一、采用的模糊算法

RenderEffect.createBlurEffect() 使用的是高斯模糊(Gaussian Blur)。
从Android 12(API 31)引入该API时,底层实现就基于高斯模糊逻辑——它支持设置水平/垂直方向的模糊半径,还能通过TileMode控制边缘模糊处理方式,这些特性都和高斯模糊的特性匹配;而Box Blur是简单的均值模糊,无法实现这种精细化的模糊参数控制,效果也和该API的输出有明显区别。

二、便捷测试方法:获取处理后的Bitmap像素值

你可以通过Canvas绘制的方式,将模糊效果应用到测试Bitmap上,然后提取像素值验证结果,具体步骤和代码如下:

  1. 创建一个3x3的测试Bitmap,设置特定像素颜色(比如中心为红色,其余为白色,方便观察模糊扩散效果)
  2. 创建带模糊RenderEffect的Paint对象
  3. 将原Bitmap绘制到新的输出Bitmap上,应用该Paint
  4. 调用getPixels()方法提取处理后的像素数组

示例代码(Kotlin)

// 1. 创建3x3的测试Bitmap
val inputBitmap = Bitmap.createBitmap(3, 3, Bitmap.Config.ARGB_8888)
val inputCanvas = Canvas(inputBitmap)
inputCanvas.drawColor(Color.WHITE)
// 中心像素设为红色(坐标1,1)
inputBitmap.setPixel(1, 1, Color.RED)

// 2. 创建模糊效果(半径设为1f,边缘采用CLAMP模式)
val blurEffect = RenderEffect.createBlurEffect(1f, 1f, Shader.TileMode.CLAMP)
val blurPaint = Paint().apply {
    renderEffect = blurEffect
}

// 3. 创建输出Bitmap并绘制应用模糊效果
val outputBitmap = Bitmap.createBitmap(3, 3, Bitmap.Config.ARGB_8888)
val outputCanvas = Canvas(outputBitmap)
outputCanvas.drawBitmap(inputBitmap, 0f, 0f, blurPaint)

// 4. 获取并打印处理后的像素值
val pixelArray = IntArray(3 * 3)
outputBitmap.getPixels(pixelArray, 0, 3, 0, 0, 3, 3)

pixelArray.forEachIndexed { index, color ->
    val x = index % 3
    val y = index / 3
    println("坐标($x,$y) 的颜色值: ${String.format("#%08X", color)}")
}

注意事项

  • 该代码需要在API 31及以上的Android版本运行
  • 可以调整模糊半径参数,观察像素值的变化,进一步验证高斯模糊的扩散规律

内容的提问来源于stack exchange,提问作者lyckanz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 17:03:28