我有两个与以下代码有关的问题:
pixels = image.getRGB(0, 0, width, height, null, 0, width);
for(int i = 0; i < pixels.length; i++)
{
pixels[i] = (pixels[i] & 0xff) / 64;
}
我的第一个问题是最后一个参数(设置为宽度)在.getRGB
方法中做了什么。第二个是(pixels[i] & 0xff) / 64
做了什么,因为我从未遇到过&
运算符,也不知道0xff
的含义,但我认为它与改变它有关。 RGB值。根据我目前正在阅读的一本书,这是一个2D游戏,我正在尝试制作。
以下是完整代码:http://pastebin.com/fPjvrFWG
谢谢!
答案 0 :(得分:0)
有关最终的scansize
参数,请参阅Javadocs:
使用图像中指定的坐标(x,y),可以通过以下方式访问ARGB像素:
pixel = rgbArray[offset + (y-startY)*scansize + (x-startX)];
这样做的目的是允许目标数组的宽度与提取的部分不同。
& 0xff
运算符只提取ARGB像素值的蓝色分量,因为像素中的位是这样排列的:
AAAAAAAA RRRRRRRR GGGGGGGG BBBBBBBB
所以&#34; anding&#34;与0xff
生成:
00000000 00000000 00000000 BBBBBBBB
然后,64除法除了该蓝色值的两个最高有效位之外,即0-63变为0,64-127变为1,128-191变为2,192-255变为3。