音视频多媒体开发基础概述之颜色格式(1)RGB颜色格式
1. 概述
常见的RGB格式有RGB1、RGB4、RGB8、RGB555、RGB565、RGB24、RGB32、ARGB32等,如表所示。
2. RGB1、RGB4、RGB8
RGB1、RGB4、RGB8都是调色板类型的RGB格式,在描述这些媒体类型的格式细节时,通常会在BITMAPINFOHEADER数据结构后面跟着一个调色板(定义一系列颜色)。
它们的图像数据并不是真正的颜色值,而是当前像素颜色值在调色板中的索引。
以RGB1为例,比如它的调色板中定义的两种颜色值依次为0x000000(黑色)和0xFFFFFF(白色)…(每个像素用1位表示)表示对应各像素的颜色为:黑黑白白黑白黑白黑白白白…。
3. RGB555
RGB555是16位的RGB格式,RGB分量都用5位表示(剩下的1位不用)。
使用一个字读出一个像素后,这个字的各个位意义如下:
高字节 低字节
X R R R R R G G G G G B B B B B (X表示不用,可以忽略)
可以组合使用屏蔽字和移位操作来得到RGB各分量的值:
#define RGB555_MASK_RED 0x7C00
#define RGB555_MASK_GREEN 0x03E0
#define RGB555_MASK_BLUE 0x001F
R = (wPixel & RGB555_MASK_RED) >> 10; // 取值范围0-31
G = (wPixel & RGB555_MASK_GREEN) >> 5; // 取值范围0-31
B = wPixel & RGB555_MASK_BLUE; // 取值范围0-31
4. RGB565
RGB565使用16位表示一个像素,这16位中的5位用于R,6位用于G,5位用于B。
程序中通常使用一个字来操作一个像素。当读出一个像素后,这个字的各个位意义如下:
高字节 低字节
R R R R R G G G G G G B B B B B
可以组合使用屏蔽字和移位操作来得到RGB各分量的值:
#define RGB565_MASK_RED 0xF800
#define RGB565_MASK_GREEN 0x07E0
#define RGB565_MASK_BLUE 0x001F
R = (wPixel & RGB565_MASK_RED) >> 11; // 取值范围0-31
G = (wPixel & RGB565_MASK_GREEN) >> 5; // 取值范围0-63
B = wPixel & RGB565_MASK_BLUE; // 取值范围0-31
#define RGB(r,g,b) (unsigned int)( (r|0x08 << 11) | (g|0x08 << 6) | b|0x08 )
#define RGB(r,g,b) (unsigned int)( (r|0x08 << 10) | (g|0x08 << 5) | b|0x08 )
该代码可以解决24位与16位相互转换的问题。
5. RGB24(RGB888)
RGB24使用24位来表示一个像素,RGB分量都用8位表示,取值范围为0-255。
注意在内存中RGB各分量的排列顺序为:BGR BGR BGR…。通常可以使用RGBTRIPLE数据结构来操作一个像素,它的定义为:
typedef struct tagRGBTRIPLE {
BYTE rgbtBlue; // 蓝色分量
BYTE rgbtGreen; // 绿色分量
BYTE rgbtRed; // 红色分量
} RGBTRIPLE;
6. RGB32(RGB8888)
RGB32使用32位来表示一个像素,RGB分量各用去8位,剩下的8位用作Alpha通道或者不用。
(ARGB32就是带Alpha通道的RGB24。)注意在内存中RGB各分量的排列顺序为:BGRA BGRA BGRA…。通常可以使用RGBQUAD数据结构来操作一个像素,它的定义为:
typedef struct tagRGBQUAD {
BYTE rgbBlue; // 蓝色分量
BYTE rgbGreen; // 绿色分量
BYTE rgbRed; // 红色分量
BYTE rgbReserved; // 保留字节(用作Alpha通道或忽略)
} RGBQUAD。
- 分享
- 举报
-
浏览量:2892次2020-11-06 17:53:15
-
浏览量:3503次2020-10-21 11:25:37
-
2020-10-21 11:35:55
-
浏览量:3516次2020-08-03 19:28:14
-
浏览量:766次2023-10-23 16:21:43
-
浏览量:1588次2019-12-23 09:44:21
-
浏览量:2066次2020-08-04 20:27:13
-
浏览量:2573次2020-08-03 19:57:19
-
浏览量:4661次2021-04-23 14:10:09
-
浏览量:1989次2022-11-21 17:11:41
-
浏览量:1372次2023-01-12 17:45:30
-
浏览量:1233次2024-02-22 15:52:02
-
2024-01-17 10:40:55
-
浏览量:1086次2023-12-26 16:33:04
-
浏览量:610次2023-10-24 17:47:15
-
浏览量:5276次2020-07-31 11:54:44
-
浏览量:3517次2020-07-30 11:57:30
-
浏览量:751次2024-03-01 16:04:36
-
浏览量:3575次2020-07-27 15:12:15
-
广告/SPAM
-
恶意灌水
-
违规内容
-
文不对题
-
重复发帖
free-jdx
感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~
举报类型
- 内容涉黄/赌/毒
- 内容侵权/抄袭
- 政治相关
- 涉嫌广告
- 侮辱谩骂
- 其他
详细说明