我正在尝试将.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?我已经存货但不知道该怎么做。图片:
答案 0 :(得分:1)
PNG是一种编码格式,因此不能直接将其作为数组进行分析,因此请充分利用您的第一直觉。
此图像为210x210,因此您应该期望44100种不同的颜色值。 Android并不知道它是黑白的,因此您需要为每个像素获取全彩色值,并且需要将它们转换为简单的0和1。
请参阅getPixels方法,这可能对您的用例更为直接。它会将像素颜色转储到int[]
argb数组中,然后您可以将其简化为黑色与白色。