请问一下为什么通过这些计算方式可以得出RGB:蓝、绿、红所对应的像素值(我查了一下相关计算,但还是有些疑惑)。
c 存储着从图片中获取的像素值,属于int类型。
int b = c & 0xff; // 蓝色
int g = ( c >> 8 ) & 0xff; // 绿色
int r = ( c >> 16 ); // 红色
请问一下为什么通过这些计算方式可以得出RGB:蓝、绿、红所对应的像素值(我查了一下相关计算,但还是有些疑惑)。
c 存储着从图片中获取的像素值,属于int类型。
int b = c & 0xff; // 蓝色
int g = ( c >> 8 ) & 0xff; // 绿色
int r = ( c >> 16 ); // 红色
这是基本的位运算知识
int 占 4 个字节,每个字节用两个 16 进制位表示。
每个像素在显示缓冲区里对应一个 int,表示方式为:0xrrggbb。
然后通过位运算:
int b = c & 0xff; // 蓝色
int g = ( c >> 8 ) & 0xff; // 绿色
int r = ( c >> 16 ); // 红色
就可以求出每个颜色分量的值。