我有一个简单的字节数组,我想从中提取颜色。我的计划是使用三位红色、三位绿色和两位蓝色。8位。
我认为这些颜色是正确的:
如果我错了,请纠正我。
我认为这些颜色是正确的:
如果我错了,请纠正我。
byte[] colours = new byte[256]; //256 different colours, 8 * 8 * 4
//(3 bits(red) + 3 bits(green) + 2 bits(blue)
int index = 0;
for(byte r = 0; r < 8; r++){
for(byte g = 0; g < 8; g++){
for(byte b = 0; b < 4; b++){
byte rr = (r & 255);
byte gg = (g & 255);
byte bb = (b & 255);
colours[index++] = (rr << 5 | gg << 2 | bb);
}
}
}
我的目标是让getColor(byte r, byte g, byte b)看起来像这样:
public static byte getColor(byte r, byte g, byte b){
return colours[return the right color using r g b];
}
但我不知道该怎么做,这就是我需要帮助的地方。
如果可能的话,我宁愿不使用Color类。
其他信息: 我正在使用BufferedImage.TYPE.BYTE.INDEXED进行绘制。
如果我的英语不好,请原谅 :)
编辑 已修正错误
colours[(rr << 5 | gg << 2 | bb)];
- ogzdgetColor
不应该是void
,因为它返回一个值。 - afsantosint index
是什么?它从未被使用过。 - mjshawcolours[(rr << 5 | gg << 2 | bb)];
这行代码指定了数组 colours 中的一个位置,但没有对其进行任何操作。@ogzd 是正确的,这看起来很奇怪。 - mjshaw