Java-了解image.getRGB(x,y)二进制输出
我使用image.getRGB(x,y);结果是:-16777216 当我将-16777216转换为二进制项时,我得到的结果是: 11111111111111111111111111111111111111111111111111111000000 我的问题是,上面每个二进制的含义是什么?(你能解释一下在没有使用颜色类别的情况下,红色、绿色、蓝色、Alpha在哪里吗)Java-了解image.getRGB(x,y)二进制输出,java,image,colors,rgb,Java,Image,Colors,Rgb,我使用image.getRGB(x,y);结果是:-16777216 当我将-16777216转换为二进制项时,我得到的结果是: 11111111111111111111111111111111111111111111111111111000000 我的问题是,上面每个二进制的含义是什么?(你能解释一下在没有使用颜色类别的情况下,红色、绿色、蓝色、Alpha在哪里吗) 谢谢您的帮助。一个int有32位,而不是64,因此-16777216的位实际上是 1111 1111 0000 0000 000
谢谢您的帮助。一个
int
有32位,而不是64
,因此-16777216
的位实际上是
1111 1111 0000 0000 0000 0000 0000 0000
前8位用于alpha。接下来的8位表示红色。接下来的8位表示绿色。最后8位表示蓝色。对于这种颜色:
alpha = 1111 1111 = 255
red = 0000 0000 = 0
green = 0000 0000 = 0
blue = 0000 0000 = 0
如果所有3个RGB值均
0
则表示黑色255
是最大可能的alpha值,意味着颜色根本不透明。一个int
有32位,而不是64
,因此-16777216
的位实际上是
1111 1111 0000 0000 0000 0000 0000 0000
前8位用于alpha。接下来的8位表示红色。接下来的8位表示绿色。最后8位表示蓝色。对于这种颜色:
alpha = 1111 1111 = 255
red = 0000 0000 = 0
green = 0000 0000 = 0
blue = 0000 0000 = 0
如果所有3个RGB值均
0
则表示黑色255是可能的最大alpha值,这意味着颜色根本不透明。您意外地将其转换为64位(long
),而不是32位(int
)
正确的二进制表示是
1111 1111 0000 0000 0000 0000 0000 0000
该值包含4个通道的数据:
combined: 1111 1111 0000 0000 0000 0000 0000 0000
-----------------------------------------------------
alpha: 1111 1111
blue: 0000 0000
green: 0000 0000
red: 0000 0000
这意味着这是一种完全不透明的黑色。您意外地将其转换为64位(long
)而不是32位(int
)
正确的二进制表示是
1111 1111 0000 0000 0000 0000 0000 0000
该值包含4个通道的数据:
combined: 1111 1111 0000 0000 0000 0000 0000 0000
-----------------------------------------------------
alpha: 1111 1111
blue: 0000 0000
green: 0000 0000
red: 0000 0000
这意味着这是一种完全不透明的黑色。IDK为什么要从二进制值的角度来看待颜色。整型值似乎更有用,请参见问题IDK为什么要根据二进制值查看颜色。整数值似乎更有用,请参见此问题