美文网首页
Android 图片处理RenderScript Intrins

Android 图片处理RenderScript Intrins

作者: 努尔江 | 来源:发表于2022-08-26 12:59 被阅读0次

    Toolkit提供了一系列高性能图像处理功能 如模糊、混合和调整大小。已弃用的RenderScript Intrinsics函数的完美替代品。

    thumb-1920-515955.jpg

    ToolKit包提供了一个C++和一个Java/Kotlin接口。它被打包为Android 可以添加到项目中的库。
    这些函数在CPU上执行多线程。他们利用霓虹灯/AdvSimd ,在Arm处理器和英特尔的SSE上。
    RenderScript Intrinsics相比,该Toolkit使用更简单,当在CPU上执行时,速度是RenderScript Intrinsics的两倍。但是,
    RenderScript内部函数允许更大的灵活性 支持的分配类型。该Toolkit不支持浮动分配;
    大多数函数支持字节数组和位图。

    您应该实例化Toolkit一次,并在整个应用程序中重用它。
    在实例化时,Toolkit会创建一个线程池,用于处理所有函数。
    您可以通过构造函数限制Toolkit使用的池线程数。池线程中在完成任何未决工作后,一旦Toolkit被销毁,就会被销毁。

    此库是线程安全的。您可以从不同的池线程调用方法。这些功能将: 按顺序执行。

    Gradle引入

    jitpack远程仓库

        allprojects {
        repositories {
            ...
            maven { url 'https://jitpack.io' }
        }
    }
    

    引用

        dependencies {
                implementation 'com.github.Neo-Turak:renderscript-toolkit:v0.8'
        }
    

    实例中使用的图片:

    img800*450b testImage2.png

    混合模式

    使用方法: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)
    

    效果:

    blend.png

    高斯模糊

    使用方法: 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)
    

    效果:

    blur.png

    颜色矩阵滤镜

    使用方法: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)
    

    效果:

    convolve.png

    直方图和直方图点

    使用方法:Toolkit.histogram()直方图
    Toolkit.histogramDot()直方图点

    LUT 和 LUT 3D

    使用方法: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)
    

    效果:

    lut.png

    调整大小

    使用方法: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)
    

    效果:

    resize.png

    YUV to RGB

    使用方法:Toolkit.yuvToRgb() 等等。

    传送门:https://github.com/Neo-Turak/renderscript-toolkit

    相关文章

      网友评论

          本文标题:Android 图片处理RenderScript Intrins

          本文链接:https://www.haomeiwen.com/subject/trptnrtx.html