I am working on a Java EE application in which I have a “items” table that will contain some products and a field to set its color.
Problem: user selects a color from a palette containing 16 or possibly 128 colors. I save the color as a byte (8-bit color), and I need to be able to convert the RGB color / integer to its 8-bit equivalent and vice versa, for example:
White: 0xFF(0b 111 111 11) to -1 or (255,255,255)
Red: 0x10(0b 111 000 00) to -65536 or (255, 0, 0 )
What I have tried so far:
void setColor(Color color){
short sColor = (color.getRGB() >> 16) & 0xFF) >> 8
| (color.getRGB() >> 8) & 0xFF) >> 8
| (color.getRGB() >> 0) & 0xFF) >> 8;
}
Color getColor(short sColor){
Color rgb = new Color(
(sColor & 0xF) << 16,
(sColor & 0xF) << 8,
(sColor & 0xF) << 0));
}
Color getColor(short sColor){
Color rgb = new Color((sColor << 8) + sColor));
}
When I iterate over color values from 0 to 255, I get one hue.
source
share