Android RenderScript+ScriptIntrinsicBlur 或 RenderEffect(android 12) 实现 图片模糊效果

Posted 匆忙拥挤repeat

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android RenderScript+ScriptIntrinsicBlur 或 RenderEffect(android 12) 实现 图片模糊效果相关的知识,希望对你有一定的参考价值。

// 图片模糊函数
private fun blurByRenderScript(bitmap: Bitmap, radius: Int, view: ImageView) {
    val rs = RenderScript.create(context)
    val allocation = Allocation.createFromBitmap(rs, bitmap)
    val blur = ScriptIntrinsicBlur.create(rs, allocation.element)
    blur.setInput(allocation)
    blur.setRadius(radius.toFloat())
    blur.forEach(allocation)
    allocation.copyTo(bitmap)
    view.setImageBitmap(bitmap)
    rs.destroy()
    allocation.destroy()
}

mBitmap?.let { blurByRenderScript(it, 20, mViewBind.ivBlur) }

android 3.0(api 11)以后支持 RenderScript, 4.2(api 17) 支持 ScriptIntrinsicBlur
android 12(api 31) 建议 对 RenderScript 进行迁移。 点进进入 迁移文档
从文档知,对于图片模糊,可使用 android 12 增加的 RenderEffect 类 进行处理。

RenderEffect

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
    val effect = RenderEffect.createBlurEffect(20f, 20f, RenderEffect.createBitmapEffect(bitmap), Shader.TileMode.DECAL)
    imageView.setRenderEffect(effect)
    return
}

RenderEffect 还可用于 RenderNode + RecordingCanvas 点击进入 RenderNode 文档

以上是关于Android RenderScript+ScriptIntrinsicBlur 或 RenderEffect(android 12) 实现 图片模糊效果的主要内容,如果未能解决你的问题,请参考以下文章

RenderScript在Android 6上崩溃

Android RenderScript+ScriptIntrinsicBlur 或 RenderEffect(android 12) 实现 图片模糊效果

Android RenderScript+ScriptIntrinsicBlur 或 RenderEffect(android 12) 实现 图片模糊效果

Android、Renderscript、ScriptIntrinsicBlur、导入 libRSSuport.so 和 librsjni.so

Android Renderscript 字符串函数?

iOS和Windows Phone的Android Renderscript等效于什么?