Представление цвета
Значение RGB является целым числом, поэтому оно представлено в памяти 4 байтами (или эквивалентно 32 битами).
Пример:
00000001 00000010 00000011 00000100
Каждый байт представляет один компонент цвета:
- 1-й байт: альфа-значение (в примере 00000001), которое соответствуетнепрозрачность
- 2-й байт: значение красного цвета (в примере 00000010)
- 3-й байт: значение зеленого цвета (в примере 00000011)
- 4-й байт: значение синего цвета (значение 00000100 впример)
0xff и 0xffffff символы
0xff представляет шестнадцатеричное значение FF, которое равно целому числу 255. Его двоичное представление:
00000000 00000000 00000000 11111111
Аналогично 0xffffff представлен:
00000000 11111111 11111111 11111111
Соответствует цвету белый (красный, зеленый и синий, равный 255).
& оператор
Бинарный оператор и «&» применяются к двум целым числам i1 и i2 (i1 и i2).Он возвращает целое число со всеми его битами, равными 0, за исключением тех, которые равны 1 в i1 и i2.Например, если мы применяем & в моем первом примере и к 0xff, мы получим:
00000000 00000000 00000000 00000100
Как следствие, (& 0xff) позволяет сохранить только значения последнего байта (т. Е. Значениесинего компонента цвета).
// If the blue component of image.getRGB(i, j) is greater than b
if ((image.getRGB(i, j) & 0xff) > b) {
// Set the image to white
image.setRGB(i, j, 0xffffff) ;
} else {
// Set the image to black
image.setRGB(i, j, 0x000000);
}