ColorFilter只有特定的颜色

时间:2018-01-27 13:25:41

标签: java android colorfilter

关于ColorFilter()函数的简短问题;我试图用新颜色替换图像的特定颜色:

默认: default 结果:result

所以在这个例子中我只想用蓝色替换红色。但不要修改此图像的黑色。

目前我使用以下代码:

int color = Color.parseColor("#0000FF"); iv1.setColorFilter(color, PorterDuff.Mode.SRC_ATOP);

来自" PorterDuff"的描述模式我应该使用" SRV_ATOP"。但是我应该如何使用这种模式,以便只替换红色?

1 个答案:

答案 0 :(得分:0)

我现在找到了一种完美运作的方式。所以对于每个面临同样问题的人来说......这里的代码对我有用:

            //Decode *.png file to Bitmap
            Bitmap Bitmap_temp = BitmapFactory.decodeResource(getResources(), R.drawable.image_1);
            Bitmap Bitmap_final = Bitmap_temp.copy(android.graphics.Bitmap.Config.ARGB_8888, true);

            //Get Pixel and change color if pixel color match
            int [] allpixels = new int [Bitmap_final.getHeight() * Bitmap_final.getWidth()];
            Bitmap_final.getPixels(allpixels, 0, Bitmap_final.getWidth(), 0, 0, Bitmap_final.getWidth(), Bitmap_final.getHeight());
            for(int i = 0; i < allpixels.length; i++)
            {
                if(allpixels[i] == Color.parseColor("#fff000"))
                {
                    allpixels[i] = Color.parseColor("#0D0D0D");
                }
            }
            Bitmap_final.setPixels(allpixels,0,Bitmap_final.getWidth(),0, 0, Bitmap_final.getWidth(),Bitmap_final.getHeight());

            //Set Bitmap to ImageView
            iv_image1.setImageBitmap(Bitmap_final);