在android中使用位图图像

时间:2014-04-17 07:23:28

标签: android bitmap

我有一个jpg图片。首先,我想将其转换为位图,以便我可以从我的图片中获取所有像素。 然后我想将像素保持为二维数组作为矩阵的行和列。 然后我想搜索行或列或两者以匹配颜色。这意味着我想找到该2D矩阵的行(或任何我想要的列)是否包含RED颜色(例如)。我试过这样的事情:

          Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.laser);
      bmp = bmp.copy(Bitmap.Config.ARGB_8888, true);          

      int[] pixels = new int[bmp.getHeight()*bmp.getWidth()];
      bmp.getPixels(pixels, 0, bmp.getWidth(), 0, 0, bmp.getWidth(), bmp.getHeight());

            for(int i =0; i<pixels.length;i++){       
           if(pixels[i]==0xffff0000)
               Toast.makeText(getApplicationContext(), "this is my Toast message!!! =)",                    Toast.LENGTH_LONG).show(); 
              }

这里我将像素放入数组(1D)并检查该数组中是否存在红色。 但它没有找到,虽然我的照片中存在红色。 这里可能是数组不能获得像素。 但这不是我想要的。我想要的是上面提到的。我怎样才能达到目标???

1 个答案:

答案 0 :(得分:0)

如果您有Bitmap对象,则可以使用Bitmap::getPixels方法获取像素。 例如,在这里我得到一个图像的第一列:

    // byte[] data2 contains image binary date from the network
    Bitmap bitmap = BitmapFactory.decodeByteArray(data2, 0, data2.length);

    int[] pixels = new int[bitmap.getHeight()];

    int offset = 0;
    int stride = 1;
    int x = 0;
    int y = 0;
    int width = 1;
    int height = bitmap.getHeight();

    bitmap.getPixels(pixels, offset, stride, x, y, width, height);

每个像素只是一个Color对象,因此您可以检查它的RGB值。