0

私は 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 をループすると、単一の色相のバリエーションが得られます。

4

1 に答える 1