我有一个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)并检查该数组中是否存在红色。 但它没有找到,虽然我的照片中存在红色。 这里可能是数组不能获得像素。 但这不是我想要的。我想要的是上面提到的。我怎样才能达到目标???
答案 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值。