颜色表现
RGB 值是一个整数,因此它在内存中用 4 个字节(或等效的 32 位)表示。
例子:
00000001 00000010 00000011 00000100
每个字节代表颜色的一个组成部分:
- 第一个字节:alpha 值(示例中为 00000001),对应不透明度
- 第二个字节:红色值(示例中为00000010)
- 第三个字节:绿色值(本例中为00000011)
- 第4个字节:蓝色值(示例中为00000100)
0xff 和 0xffffff 符号
0xff代表十六进制值FF,等于整数255。其二进制表示为:
00000000 00000000 00000000 11111111
同样0xffffff表示为:
00000000 11111111 11111111 11111111
对应颜色为白色(红绿蓝等于255)。
&运算符
二元运算符和“&”应用于两个整数 i1 和 i2 (i1 & i2)。它返回一个整数,除了 i1 和 i2 中的位都等于 1 之外,它的所有位都等于 0。
例如,如果我们在我的第一个示例和 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);
}