关于获取象素颜色分量的问题?

mattus_zhao 2003-04-26 08:09:37
在 Java 1.3.1 SDK 文档中有这样一个实例函数:

public void handlesinglepixel(int x, int y, int pixel) {
int alpha = (pixel >> 24) & 0xff;
int red = (pixel >> 16) & 0xff;
int green = (pixel >> 8) & 0xff;
int blue = (pixel ) & 0xff;
// Deal with the pixel as necessary...
}

我知道 pixel >> somebits 是为了把相应的颜色分量移动到最低位,但是为什么每一个颜色分量都还要进行:& 0xff 操作呢?

谢谢!

...全文
27 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
Eraserpro 2003-04-26
  • 打赏
  • 举报
回复
因为pixel是一个整数
图像的表示分四部分:alpha值,red,green,blue
每一个值占一个字节,一个字节有8位二进制
比如大红色用整数表示就是00 FF 00 00
pixel >> somebits是为了得到单独的alpha,red,green,blue值
右移24与255与操作得到alpha
16位得到red......
如果不& 0xff的话,上面的int green = (pixel >> 8) & 0xff;
得到的green值是FF 00 也就是65280,当然就不是我们要得到值
与操作是为了把高位削去!!!!

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧