该工具包提供了一系列高性能图像处理功能 如模糊、混合和调整大小。已弃用的RenderScript Intrinsics函数的完美替代品。
该工具包提供了一个C++和一个Java/Kotlin接口。它被打包为Android 可以添加到项目中的库。 这些函数在CPU上执行多线程。他们利用霓虹灯/AdvSimd ,在Arm处理器和英特尔的SSE上。 与RenderScript Intrinsics相比,该工具包使用更简单,当在CPU上执行时,速度是前者的两倍。但是, RenderScript内部函数允许更大的灵活性 支持的分配类型。该工具包不支持浮动分配; 大多数函数支持字节数组和位图。
您应该实例化工具箱一次,并在整个应用程序中重用它。 在实例化时,工具箱创建一个线程池,用于处理所有函数。 您可以通过构造函数限制工具箱使用的池线程数。池线程中在完成任何未决工作后,一旦工具包被销毁,就会被销毁。
此库是线程安全的。您可以从不同的池线程调用方法。这些功能将: 按顺序执行。
jitpack远程仓库
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
引用
dependencies {
implementation 'com.github.Neo-Turak:renderscript-toolkit:v0.8'
}
实例中使用的图片:
使用方法:ToolKit.blend() 方法,重载2个。
val testImage1 = BitmapFactory.decodeResource(resources, R.drawable.img800x450b)
val testImage2 = BitmapFactory.decodeResource(resources, R.drawable.img800x450a)
Toolkit.blend(BlendingMode.ADD, testImage1, testImage2)
findViewById<ShapeableImageView>(R.id.siv).setImageBitmap(testImage2)
效果:
使用方法: Toolkit.blue() 请注意取值范围(1-5)
val testImage1 = BitmapFactory.decodeResource(resources, R.drawable.img800x450b)
val result=Toolkit.blur(testImage1,3)
findViewById<ShapeableImageView>(R.id.siv).setImageBitmap(result)
效果:
使用方法:Toolkit.colorMatrix()
使用方法:Toolkit.convolve()
val testImage1 = BitmapFactory.decodeResource(resources, R.drawable.img800x450b)
// val testImage2 = BitmapFactory.decodeResource(resources, R.drawable.img800x450a)
val result = Toolkit.convolve(
testImage1,
floatArrayOf(1F, 1F, 1f, 1f, 1f, 1f, 1f, 1f, 1f)
)
findViewById<ShapeableImageView>(R.id.siv).setImageBitmap(result)
效果:
使用方法:Toolkit.histogram()直方图 Toolkit.histogramDot()直方图点
使用方法:Toolkit.lut() 和Toolkit.loot3d()
val testImage1 = BitmapFactory.decodeResource(resources, R.drawable.img800x450b)
// val testImage2 = BitmapFactory.decodeResource(resources, R.drawable.img800x450a)
val lookupTable=LookupTable()
lookupTable.blue= byteArrayOf(10)
val result = Toolkit.lut(
testImage1,
lookupTable
)
findViewById<ShapeableImageView>(R.id.siv).setImageBitmap(result)
效果:
使用方法:Toolkit.resize()
val testImage1 = BitmapFactory.decodeResource(resources, R.drawable.img800x450b)
// val testImage2 = BitmapFactory.decodeResource(resources, R.drawable.img800x450a)
val result = Toolkit.resize(
testImage1,
100,50
)
findViewById<ShapeableImageView>(R.id.siv).setImageBitmap(result)
效果:
使用方法:Toolkit.yuvToRgb() 等等。