私は Java EE アプリケーションに取り組んでいます。このアプリケーションには、いくつかの製品を含む「アイテム」のテーブルと、その色を設定するフィールドがあります。
問題: ユーザーは、16 色またはおそらく 128 色を含むパレットから色を選択します。色をバイト (8 ビット色) として保存しています。RGB 色/整数を 8 ビットの同等の色に、またはその逆に変換できる必要があります。たとえば、次のようになります。
White: 0xFF(0b 111 111 11) to -1 or (255,255,255)
Red: 0x10(0b 111 000 00) to -65536 or (255, 0, 0 )
私がこれまでに試したこと:
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(
/*red:*/ (sColor & 0xF) << 16,
/*gree:*/ (sColor & 0xF) << 8,
/*blue*/ (sColor & 0xF) << 0));
}
/* or */
Color getColor(short sColor){
Color rgb = new Color((sColor << 8) + sColor));
}
色の値 0 から 255 をループすると、単一の色相のバリエーションが得られます。