Java 消除缓冲图像上的alpha通道

Java 消除缓冲图像上的alpha通道,java,Java,我在网上观看java游戏开发系列时遇到了这段代码 去掉像素的0xAARRRGGBB符号中的alpha通道,使其成为0xRRGGBB。据我所知,&0xff所做的是从整数中捕获信息的最后一个字节。还解释了 pixels[i] = (pixels[i] & 0xff)/64; 是用255除以4得到的(我相信这是关于限制颜色的数量) 所以我的问题基本上是: 0xff如何摆脱alpha通道 我相当肯定,我的困惑是我缺乏十六进制数字的经验 您的理解是正确的,视频中关于删除alpha通道的解释是错

我在网上观看java游戏开发系列时遇到了这段代码

去掉像素的0xAARRRGGBB符号中的alpha通道,使其成为0xRRGGBB。据我所知,&0xff所做的是从整数中捕获信息的最后一个字节。还解释了

pixels[i] = (pixels[i] & 0xff)/64;
是用255除以4得到的(我相信这是关于限制颜色的数量)

所以我的问题基本上是: 0xff如何摆脱alpha通道


我相当肯定,我的困惑是我缺乏十六进制数字的经验

您的理解是正确的,视频中关于删除alpha通道的解释是错误的

这并不意味着所有内容都显示为蓝色,因为这张图像不会像现在这样显示,他现在只需要数字0、1、2、3(我没有看视频的结尾,所以我不知道他将如何从0、1、2、3中生成颜色,但这一定是另一个步骤)

但是,如果显示这些颜色,它们将是非常深的蓝色,实际上是黑色。0为纯黑色,其他颜色与黑色无法区分

对于正数(我们知道(像素[i]&0xff)为正数),除以64等于向右移动6位。 看

无论如何,如果使用换档运算符,代码会更清晰:

pixels[i] = (pixels[i] & 0xff) >>> 6;
pixels[i] = (pixels[i] & 0xff)/64;
pixels[i] = (pixels[i] & 0xff) >>> 6;