如何在Android中仅在图像的某些部分设置图像过滤器

问题描述 投票:0回答:1

我有一些白色背景的图像,里面有一些文字和徽标。我只想为文本和徽标设置过滤器,但不为白色背景设置过滤器。

我尝试设置过滤器,但它只是改变了整个图像的颜色。 我想要在过滤器中的逻辑是这样的

if(color == white){
  //do nothing
} else {
  //turn gray 
}

有办法做到这一点吗?

android kotlin imageview
1个回答
0
投票

刚刚找到我的问题的答案。

假设您有图像名称位图的位图

                val width = bitmap.width
                val height = bitmap.height
                val pixels = IntArray(width*height)
                bitmap.getPixels(pixels, 0, width, 0, 0, width, height)

                for (i in pixels.indices) {

                    val red = Color.red(pixels[i])
                    val green = Color.green(pixels[i])
                    val blue = Color.blue(pixels[i])

                    if( /* check if pixel rgb meets your condiion*/ ){
                        //Change your rbg value here. In this example increase rgb by 1
                        pixels[i] = Color.rgb(red+1, green+1, blue+1)
                    }
                }

                val newBitmap = Bitmap.createBitmap(pixels, width, height, Bitmap.Config.ARGB_8888)
© www.soinside.com 2019 - 2024. All rights reserved.