IT评测·应用市场-qidao123.com

标题: Android RenderScript API废弃,迁移到高性能renderscript-toolkit及耗时优 [打印本页]

作者: 莱莱    时间: 2025-2-19 00:55
标题: Android RenderScript API废弃,迁移到高性能renderscript-toolkit及耗时优
Android RenderScript API废弃,迁移到高性能renderscript-toolkit及耗时优化,Kotlin

 

 
高版本Android的高斯暗昧(毛玻璃)实现已经废弃,新版可迁移、换用新的方式实现:
https://developer.android.com/guide/topics/renderscript/migrate?hl=zh-cn
   从 Android 12 开始,RenderScript API 已被废弃。装备和组件制造商已制止提供硬件加速支持,预计将在未来的版本中完全取消对 RenderScript 的支持。
  C/C++ 性能可能足以满意许多用例的需要,假如您仅将 RenderScript 用于内建函数,可使用 RenderScript 内建函数更换工具包来替代。后者更易于使用,而且有可能将性能提高 2 倍!
  假如您需要充分利用 GPU 加速功能,我们建议您将脚本迁移到 Vulkan,其他加速选项包罗将脚本迁移到 OpenGL,方法是使用基于画布的图片操作,或利用 Android 图形着色语言 (AGSL)。
  在 Android 平台中废弃 RenderScript 后,将在 Android Gradle 插件中取消对 RenderScript 的支持。从 Android Gradle 插件 7.2 开始,废弃了 RenderScript API。它们会继续正常运行,但会产生警告。未来的 AGP 版本将不再支持 RenderScript。
   
 
更换方式:
1、在这里下载依赖的module包:
https://github.com/android/renderscript-intrinsics-replacement-toolkit
其中里面有 renderscript-toolkit,将 renderscript-toolkit 作为一个Android Module添加。
 
2、在应用中添加对 renderscript-toolkit 添加Module依赖。
然后就可以使用了。
  1. import android.graphics.BitmapFactory
  2. import android.os.Bundle
  3. import android.util.Log
  4. import android.widget.ImageView
  5. import androidx.appcompat.app.AppCompatActivity
  6. import com.google.android.renderscript.Toolkit
  7. class MainActivity : AppCompatActivity() {
  8.     override fun onCreate(savedInstanceState: Bundle?) {
  9.         super.onCreate(savedInstanceState)
  10.         setContentView(R.layout.image_layout)
  11.         //val imageView1 = findViewById<ImageView>(R.id.image1)
  12.         val imageView2 = findViewById<ImageView>(R.id.image2)
  13.         val imageView3 = findViewById<ImageView>(R.id.image3)
  14.         val bmp = BitmapFactory.decodeResource(resources, R.mipmap.img)
  15.         var t = System.currentTimeMillis()
  16.         val blurBmp2 = Toolkit.blur(bmp, 10)
  17.         Log.d("fly", "cost time = ${System.currentTimeMillis() - t}")
  18.         imageView2.setImageBitmap(blurBmp2)
  19.         t = System.currentTimeMillis()
  20.         val blurBmp3 = Toolkit.blur(bmp, 20)
  21.         Log.d("fly", "cost time = ${System.currentTimeMillis() - t}")
  22.         imageView3.setImageBitmap(blurBmp3)
  23.         Toolkit.shutdown()
  24.     }
  25. }
复制代码
记得在应用退出时候关闭Toolkit。
 
 

 
 
 
Toolkit在第一次调用blur时候,耗时过长,因为初始化。优化的一个思路是在正式开始之前,先主动调用Toolkit.blur做一次高斯暗昧。好比:
  1.         val fakeBmp = Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_8888)
  2.         Toolkit.blur(fakeBmp) //没有意义的一次高斯模糊,只是为了让Toolkit的初始化加载前置,让后续的调用避免耗时。
复制代码
后续调用Toolkit.blur耗时比力少,且耗时稳定。
 
 
Android RenderEffect对Bitmap高斯暗昧(毛玻璃),Kotlin(1)-CSDN博客文章欣赏阅读308次。Android拼接归并图片生成长图代码实现归并两张图片,以第一张图片的宽度为标准,假如被归并的第二张图片宽度和第一张差别,那么就以第一张图片的宽度为准线,对第二张图片举行缩放。Android拼接归并图片生成长图代码实现归并两张图片,以第一张图片的宽度为标准,假如被归并的第二张图片宽度和第一张差别,那么就以第一张图片的宽度为准线,对第二张图片举行缩放。Android BitmapShader简洁实现马赛克/高斯暗昧(毛玻璃),Kotlin(三)_android kotlin实现毛玻璃遮罩-CSDN博客。
https://blog.csdn.net/zhangphil/article/details/145597167
Android新版高斯暗昧(毛玻璃)官方实现,Kotlin-CSDN博客文章欣赏阅读549次,点赞13次,收藏4次。Android拼接归并图片生成长图代码实现归并两张图片,以第一张图片的宽度为标准,假如被归并的第二张图片宽度和第一张差别,那么就以第一张图片的宽度为准线,对第二张图片举行缩放。Android拼接归并图片生成长图代码实现归并两张图片,以第一张图片的宽度为标准,假如被归并的第二张图片宽度和第一张差别,那么就以第一张图片的宽度为准线,对第二张图片举行缩放。Android BitmapShader简洁实现马赛克/高斯暗昧(毛玻璃),Kotlin(三)_android kotlin实现毛玻璃遮罩-CSDN博客。
https://blog.csdn.net/zhangphil/article/details/145575404
 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 IT评测·应用市场-qidao123.com (https://dis.qidao123.com/) Powered by Discuz! X3.4