位图,使用深色

时间:2013-10-01 17:46:01

标签: android colors bitmap

在我的应用程序中,我必须处理图像的各个像素。 首先,我用这段代码给出了灰度图像

private Bitmap BiancoNero(Bitmap originalBitmap) {
        ColorMatrix colorMatrix = new ColorMatrix();
        colorMatrix.setSaturation(0);

        ColorMatrixColorFilter colorMatrixFilter = new ColorMatrixColorFilter(
                colorMatrix);

        Bitmap blackAndWhiteBitmap = originalBitmap.copy(
                Bitmap.Config.ARGB_8888, true);

        Paint paint = new Paint();
         paint.setColorFilter(colorMatrixFilter);

        Canvas canvas = new Canvas(blackAndWhiteBitmap);
        canvas.drawBitmap(blackAndWhiteBitmap, 0, 0, paint);

        return blackAndWhiteBitmap;
    }

之后,绘制一个只有0和1的矩阵(0白色,1黑色) 具有以下控制

if(colore==-1)
        matrice[i][j] = 0; //zero is for white
                                else if(colore == -16777216)
                                        matrice[i][j] = 1; //black pixel
                                else
                                        matrice[i][j] =0; //other shades of gray

如何获得深灰色的细微差别? 也就是说,当我们考虑白色0%和黑色100%时,我想找到66%以上的所有颜色 我刚刚输入if> color = 5592405(相当于-16777216 / 3) 会有用吗?

1 个答案:

答案 0 :(得分:1)

如果您的矩阵是灰色的,那么R = G = B值。

让我们采用最不重要的“字节”并根据它进行测试。

int c = colore & 0xFF;

c应该是0到255之间的值。

66%:

if ((float)c > 255.0f*0.66f)

使用小数字更容易。试试并发布结果。