2013-07-11 2 views
3

Я борюсь с очень простой задачей (ну, я так думаю). У меня есть byte[4] массив, который представляет значения цвета, такие как byte[0] = alpha, byte [1] = red и так далее. Как преобразовать этот массив байтов в фактический объект цвета? Спасибо за ответ.Как построить цвет из массива байтов?

ответ

9

Bytes в Java подписаны, так что положительная часть может содержать только значения до 127, RGB доходит до 255. Таким образом, вы должны компенсировать это:

byte b = (byte) 130; 
int i = b & 0xFF; 
System.out.println(i); //Prints 130 again 

ИНТ может затем быть передан в цвете конструктор.

Edit: полный пример:

byte[] values = new byte[] {(byte) 130, (byte) 150, (byte) 200, (byte) 200}; 
Color color = Color.argb(values[0] & 0xFF, values[1] & 0xFF, values[2] & 0xFF, values[3] & 0xFF); 
System.out.println(color + " alpha " + color.getAlpha()); 
+0

+1. Хорошая работа, заметив этот факт. – ARC

+0

Начиная с Java7, вы хотите: 'new Color.argb (значения [1] & 0xFF, значения [2] и 0xFF, значения [3] и 0xFF, значения [0] и 0xFF);' – averasko

Смежные вопросы