【问题标题】:How to convert image black and white image to 0 - 1 byte array in android如何在android中将图像黑白图像转换为0-1字节数组
【发布时间】:2016-05-17 06:35:07
【问题描述】:

我正在尝试将.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 中,我得到包含超过 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)

是否有可能将 bmp 转换为数组,其中 WHITE 颜色为 0,BLACK 为 1?我已经有货了,不知道该怎么办。图片:

【问题讨论】:

    标签: java android arrays bitmap bit


    【解决方案1】:

    PNG 是一种编码格式,因此将其作为数组进行分析并不容易,因此请按照您的第一直觉行事。

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

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

    【讨论】:

      猜你喜欢
      • 2018-12-14
      • 2013-03-17
      • 2011-11-29
      • 1970-01-01
      • 1970-01-01
      • 2013-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多