如何使用颜色代码制作if语句

时间:2012-02-08 13:51:12

标签: java android colors pixel

我遇到了一个小问题,我认为,这不会很难。 但不知何故,我想念“不能很难”的部分:)。

我有一个代码,用于读取图像的颜色:

bmp = BitmapFactory.decodeResource(getResources(), R.drawable.four_colors);


    //define the array size
    rgbValues = new int[bmp.getWidth()][bmp.getHeight()]; 

    //Print in LogCat's console each of one the RGB and alpha values from the 4 corners of the image
    //Top Left
    for (int j = 0; j < 1000; j++){
        for (int k = 0; k < 1000; k++){
    Log.i("Pixel Value", "pixel x="+j +k + Integer.toHexString(bmp.getPixel(j, k)));
    test = Integer.toHexString(bmp.getPixel(j,  k));


        }
    }

    //get the ARGB value from each pixel of the image and store it into the array
    for(int i=0; i < bmp.getWidth(); i++)
    {
        for(int j=0; j < bmp.getHeight(); j++)
        {
            //This is a great opportunity to filter the ARGB values
            rgbValues[i][j] = bmp.getPixel(i, j);               
        }   
    }

    System.out.println(PixelNumber);
    System.out.println(test);
}

这段代码就像一个魅力。 但我试图实现一个if语句,如:

if (color == black){
    number++;
}

所以他看到的每个像素都是黑色的,他必须用1增加数字。

我几乎尝试了所有可以做出关于此代码的if语句,但似乎没有任何效果。 那么这段代码中的正确位置和if语句是什么?

也许如果你有更多的时间(如果你不想要的话,不要花太多精力)是否可以检查颜色范围而不是1种颜色,所以它选择所有的绿色。 (与photoshop中的色彩范围相同)。

3 个答案:

答案 0 :(得分:1)

getPixel以整数形式返回4 GB的ARGB。您应该做的是撰写您想要计算的颜色(argb Color方法会对您有帮助)并使用getPixel(x, y)测试此值。
对于黑色,这很容易:

if(Color.BLACK == bmp.getPixel(x, y))
     //doit

对于范围,您可以使用green / red / blue方法,每个方法都返回该组件的值。如果它不为零,则该像素具有该组件的颜色。

答案 1 :(得分:0)

你可以使用像if这样的条件(rgbValues [i] [j] == Color.BLACK)。

该代码将如下所示。

 //get the ARGB value from each pixel of the image and store it into the array
    for(int i=0; i < bmp.getWidth(); i++)
    {
        for(int j=0; j < bmp.getHeight(); j++)
        {
            //This is a great opportunity to filter the ARGB values

            rgbValues[i][j] = bmp.getPixel(i, j);   
            if(rgbValues[i][j] == Color.BLACK) {

        }   
    }

答案 2 :(得分:0)

Bitmap#getPixel(int, int)返回int值,表示给定像素的透明度(alpha)和颜色(rgb)。

黑色的RGB值为(0x00, 0x00, 0x00)。因此,如果你想测试黑色忽略alpha值,测试应该是这样的:

if ((rgbValue[i][j] & 0x00ffffff) == 0) {
   // this pixel is black
   number++;
}

颜色范围非常困难。首先,我们需要 green 的可计算定义(例如)。 绿色非常主观。一旦你掌握了算法,就把它放在一个不同的方法中并进行这样的调用:

if (isGreenish(rgbValue[i][j])) {     // magic method
   // this pixel is some sort of green
   number++;
}