从BItmap中提取byte []中的pixcel颜色值

时间:2016-09-21 09:59:39

标签: android android-bitmap

背景

我正在编写一个简单的应用程序,其中app从RGB_565格式的位图中提取像素颜色,并通过BLE将其发送到蓝牙设备

我得到argb格式的颜色的int [],我想用RGB_565格式 所以我从Color.red(-10267343)中提取了红色,绿色,蓝色,其中-10267343是我从getPixel(x,y)得到的像素的颜色

我得到了

red : 99
green : 85
blue : 99 //from the above color value -10267343

我的问题是如何在两个字节中添加这些红色,绿色,蓝色

我需要这种格式|R|R|R|R|R|G|G|G|G|G|G|B|B|B|B|B|

到目前为止,我尝试了这种方法

byte[] colorToByte(int c){
  int r = (c >> 16) & 0xFF;
  int g = (c >> 8)  & 0xFF;
  int b =  c        & 0xFF;
  return new byte[]{(byte)((r&248)|g>>5),(byte)((g&28)<<3|b>>3)};
}

正如本回答How to correctly convert from rgb565 to rgb888

中所述

我也尝试了这个答案,但没有运气Java image conversion to RGB565

有什么方法可以解决这个问题吗?任何帮助赞赏

1 个答案:

答案 0 :(得分:2)

private static byte[] colorToByte(int c){
        int rgb = c;
        int blue = rgb & 0xFF;
        int green = (rgb >> 8) & 0xFF;
        int red = (rgb >> 16) & 0xFF;

        int r_565 = red >> 3;
        int g_565 = green >> 2;
        int b_565 = blue >> 3;
        int rgb_565 = (r_565 << 11) | (g_565 << 5) | b_565;

        return new byte[]{(byte) ((rgb_565 >> 8) & 0xFF), (byte) (rgb_565 & 0xFF)};

        }