RGB格式详解
简述
RGB色彩模型是工业界的一种颜色标准,又称三原色光模式,是一种加色模型。简单地说,因为红、绿、蓝这三种颜色是人眼的感知最为敏感的颜色,故称之为三原色。因此,将红、绿、蓝三原色的色光按照不同比例叠加,可以合成产生各种色彩光。
RGB色彩模型主要用于电子设备显示,比如电视或电脑,利用大脑强制视觉模糊化(失焦),将红绿蓝三原色分量合成一色彩色像素,进而产生感知层面的色彩,并不需要物理上将三种原色叠加。因此三原色背后的原理是基于生理原因而非物理原因。
RGB颜色模式所产生的颜色几乎覆盖了人类所能感知的所有色彩,因此是目前运用最广的色彩模型之一。
两种格式
RBG色彩模型有两种数据格式,分别是:
索引格式
这种格式是一种比较老的格式,所能表达的色彩有限,但相对于像素格式而已更节省空间。RGB对应的像素空间存储的不是像素值而是一个索引,通过索引可找在调色板找到对应的颜色。
常用的类型有RGB1、RBG4和RGB8,分别表示用1 bit、4 bits和8 bits来表示一个像素,因此它们分别能表示的颜色范围为2种、16种和256种。
像素格式
像素格式是一种新型的格式,RGB对应的像素空间中直接存储对应的像素值,这样不再需要调色板便可以直接表示色彩值。
常用的类型有以下几种:
RGB565
每个像素使用2个字节表示,即16 bits,RGB分量从高到底分别占用5 bits、6 bits和5 bits
1
2
3high low
| 5 bits | 6 bits | 5 bits |
|----R-----|-----G-----|-----B-----|RGB555
每个像素使用2个字节表示,即16 bits,RGB分量从高到底分别占用5 bits、5 bits和5 bits,且最高位保留。
1
2
3high low
| | 5 bits | 5 bits | 5 bits |
|-|----R-----|-----G-----|-----B-----|RGB24
每个像素使用3个字节表示,即24 bits,RGB分量各占用1个字节,即8 bits。注:RGB24在内存中的存放顺序为BGR。
1
2
3high low
| 8 bits | 8 bits | 8 bits |
|----B-----|-----G-----|-----R-----|RGB32
每个像素使用4个字节表示,即32 bits,RGB分量各占用1个字节,即8 bits,且最低位的1个字节保留。注:RGB32在内存的存放顺序为BGR。
1
2
3high low
| 8 bits | 8 bits | 8 bits | 8 bits |
|----B-----|-----G-----|-----R-----|--reserved--|ARGB32
每个像素使用4个字节表示,即32 bits,RGB分量各占用1个字节,即8 bits,最低位的1个字节用于表示透明度alpha。注:ARGB32在内存的存放顺序为BGRA。
1
2
3high low
| 8 bits | 8 bits | 8 bits | 8 bits |
|----B-----|-----G-----|-----R-----|---alpha----|
参考资料
图解RGB565、RGB555、RGB16、RGB24、RGB32、ARGB32等格式的区别_mb5ff591cb6ec96的技术博客_51CTO博客