Android RenderScript-toolkit库,替换老式的脚本方式(常用于高斯模糊)

此工具包提供了一系列高性能图像处理函数,例如模糊、混合和调整大小。它可以作为大多数已弃用的 RenderScript 内部函数的独立替代品。

支持16k page size

支持16k page size

支持16k page size

回顾 RenderScript Intrinsics

曾经我们要实现高斯模糊,都会用到RenderScript Intrinsics的方式。

老的方式,会用到如下配置:

markdown 复制代码
        android {
            compileSdkVersion 33

            defaultConfig {

                // 这里需要增加此项配置
                renderscriptTargetApi 19
                renderscriptSupportModeEnabled true
            }
        }

是否勾起了你的记忆。

使用方式我就不赘述了,不是本篇重点

过时的 RenderScript Intrinsics

以下摘抄自Google原文:

从 Android 12 开始,RenderScript API 已被废弃。设备和组件制造商已停止提供硬件加速支持,预计将在未来的版本中完全取消对 RenderScript 的支持。
在 Android 平台中废弃 RenderScript 后,将在 Android Gradle 插件中取消对 RenderScript 的支持。从 Android Gradle 插件 7.2 开始,废弃了 RenderScript API。它们会继续正常运行,但会产生警告。未来的 AGP 版本将不再支持 RenderScript。

官方迁移文档:从 Render​Script 迁移

Renderscrip-Toolkit

以下为官方翻译:

与 RenderScript Intrinsics 相比,此工具包使用起来更简单,在 CPU 上执行速度也快一倍。然而,RenderScript Intrinsics 在支持的分配类型方面提供了更大的灵活性。此工具包不支持浮点型分配;大多数函数支持字节数组 (ByteArray) 和位图 (Bitmap)。
该工具包提供 C++ 和 Java/Kotlin 接口。它被打包为一个 Android 库,您可以将其添加到您的项目中。

Google 提供了 Renderscrip-Toolkit 工具,但是只给了源代码,没有直接打包成aar提供使用,所以需要自行编译。

包含功能

  • 混合模式
  • 高斯模糊
  • 颜色矩阵滤镜
  • 盲卷积
  • 直方图和直方图点
  • LUT和LUT3D
  • 调整大小
  • YUV to RGB

添加依赖

scss 复制代码
implementation("io.github.limuyang2:renderscrip-toolkit:1.0.2")

使用方法

使用Toolkit调用各类方法。

kotlin 复制代码
// 例:高斯模糊
val newBitmap = Toolkit.blur(inputBitmap, 20)

// 剩下的可以直接查看 Toolkit 类中方法

项目地址

RenderScript-toolkit

相关推荐
sweetying1 小时前
30了,人生按部就班
android·程序员
用户2018792831671 小时前
Binder驱动缓冲区的工作机制答疑
android
真夜1 小时前
关于rngh手势与Slider组件手势与事件冲突解决问题记录
android·javascript·app
用户2018792831671 小时前
浅析Binder通信的三种调用方式
android
用户092 小时前
深入了解 Android 16KB内存页面
android·kotlin
火车叼位3 小时前
Android Studio与命令行Gradle表现不一致问题分析
android
前行的小黑炭5 小时前
【Android】 Context使用不当,存在内存泄漏,语言不生效等等
android·kotlin·app
前行的小黑炭6 小时前
【Android】CoordinatorLayout详解;实现一个交互动画的效果(上滑隐藏,下滑出现);附例子
android·kotlin·app
用户20187928316718 小时前
Android黑夜白天模式切换原理分析
android
芦半山18 小时前
「幽灵调用」背后的真相:一个隐藏多年的Android原生Bug
android