我正在编写一个简单的应用程序,其中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
有什么方法可以解决这个问题吗?任何帮助赞赏
答案 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)};
}