如何在Android中将图像黑白图像转换为0-1字节数组

时间:2016-02-07 15:33:11

标签: java android arrays bitmap bit

我正在尝试将.BMP图片转换为byte[]byte[][]。我已经尝试了2个解决方案而且我得到了奇怪的结果

第一:

Bitmap bitmap = BitmapFactory.decodeResource(getResources(),R.drawable.qr);
int bytes = bitmap.getByteCount();
ByteBuffer buffer = ByteBuffer.allocate(bytes);
bitmap.copyPixelsToBuffer(buffer);
byte[] byt = buffer.array();

byt i get数组中,超过36 000个元素并且所有数组都有-1值。

我的第二次尝试是:

Bitmap bitmap = BitmapFactory.decodeResource(getResources(),R.drawable.qr);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 100,stream);
byte[] byteArrat = stream.toByteArray();

但是现在我有超过1200个元素的数组,它们看起来是随机的(值形式-180到100)

对于WHITE颜色为0且BLACK为1的数组,是否有可能使用bmp to b?我已经存货但不知道该怎么做。图片:

Image to decode

1 个答案:

答案 0 :(得分:1)

PNG是一种编码格式,因此不能直接将其作为数组进行分析,因此请充分利用您的第一直觉。

此图像为210x210,因此您应该期望44100种不同的颜色值。 Android并不知道它是黑白的,因此您需要为每个像素获取全彩色值,并且需要将它们转换为简单的0和1。

请参阅getPixels方法,这可能对您的用例更为直接。它会将像素颜色转储到int[] argb数组中,然后您可以将其简化为黑色与白色。