RGB 简介
RGB 色彩模式是工业界的一种颜色标准,是通过对红(R)、绿(G)、蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,RGB 即是代表红、绿、蓝三个通道的颜色,这个标准几乎包括了人类视力所能感知的所有颜色,是目前运用最广的颜色系统之一。
RGB格式
RGB16 格式
RGB16 数据格式主要有两种:RGB565 和 RGB555。
1. RGB565
每个像素用 16 比特位表示,占 2 个字节,R,G,B 分量分别使用 5 位、6 位、5 位。
R R R R R G G G G G G B B B B B
从上面排列格式,得到 RGB565 各分量的值:
#define RGB565_MASK_RED 0xF800
#define RGB565_MASK_GREEN 0x07E0
#define RGB565_MASK_BLUE 0x001F
R = (color & RGB565_MASK_RED) >> 11; // 取值范围0-31
G = (color & RGB565_MASK_GREEN) >> 5; // 取值范围0-63
B = color & RGB565_MASK_BLUE; // 取值范围0-31
2. RGB555
每个像素用 16 比特位表示,占 2 个字节,R,G,B 分量都使用 5 位(最高位不用)。
X R R R R R G G G G G B B B B B (X表示不用,可以忽略)
从上面排列格式,得到 RGB555 各分量的值:
#define RGB555_MASK_RED 0x7C00
#define RGB555_MASK_GREEN 0x03E0
#define RGB555_MASK_BLUE 0x001F
R = (color & RGB555_MASK_RED) >> 10; // 取值范围0-31
G = (color & RGB555_MASK_GREEN) >> 5; // 取值范围0-31
B = color & RGB555_MASK_BLUE; // 取值范围0-31
RGB24 格式
每个像素用 24 比特位表示,占 3 个字节,R,G,B 分量都使用 8 位。
R R R R R R R R G G G G G G G G B B B B B B B B
从上面排列格式,得到 RGB 各分量的值:
#define RGB24_MASK_RED 0xFF0000
#define RGB24_MASK_GREEN 0x00FF00
#define RGB24_MASK_BLUE 0x0000FF
R = (color & RGB24_MASK_RED) >> 16;
G = (color & RGB24_MASK_GREEN) >> 8;
B = color & RGB24_MASK_BLUE;
RGB32 格式
每个像素用 32 比特位表示,占 4 个字节,R,G,B,X 分量都使用 8 位。
R R R R R R R R G G G G G G G G B B B B B B B B X X X X X X X X (X表示不用,保留字节)
从上面排列格式,得到 RGBX 各分量的值:
#define RGB32_MASK_RED 0xFF000000
#define RGB32_MASK_GREEN 0x00FF0000
#define RGB32_MASK_BLUE 0x0000FF00
#define RGB32_MASK_X 0x000000FF
R = (color & RGB32_MASK_RED) >> 24;
G = (color & RGB32_MASK_GREEN) >> 16;
B = (color & RGB32_MASK_BLUE) >> 8;
X = color & RGB32_MASK_X;
ARGB32
与 RGB32 的区别在于,保留的 8 个 bit 用来表示透明度,也就是 alpha 的值。
R R R R R R R R G G G G G G G G B B B B B B B B A A A A A A A A
从上面排列格式,得到 RGBA 各分量的值:
#define ARGB_MASK_RED 0xFF000000
#define ARGB_MASK_GREEN 0x00FF0000
#define ARGB_MASK_BLUE 0x0000FF00
#define ARGB_MASK_ALPHA 0x000000FF
R = (color & ARGB_MASK_RED) >> 24;
G = (color & ARGB_MASK_GREEN) >> 16;
B = (color & ARGB_MASK_BLUE) >> 8;
A = color & ARGB_MASK_ALPHA;
参考资料:
图解RGB565、RGB555、RGB16、RGB24、RGB32、ARGB32等格式的区别
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。