还是图像处理的东西,想想这些都是基础,还是做一下总结

1.RGB介绍

RGB色彩是工业界的一种颜色标准,是通过对红(R)、绿(G)、蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,RGB即是代表红、绿、蓝三个通道的颜色,这个标准几乎包括了人类视力所能感知的所有颜色,是运用最广的颜色系统之一。三原色Red, Green, Blue, 每一种颜色值的范围是0~255,所以每一个颜色用1个字节=8个bit便可完全在计算机内部表示出来。而R, G, B不同的组合几乎产生了所有的颜色,当然自然界中的颜色比这些要远远丰富很多,采用R, G, B的方式,如果以24色深表示的话,在计算机中可表示的颜色数量有2^8 2 ^8 2 ^8 = 16777216种颜色。

 

2.RGB原理

RGB是从颜色发光的原理来设计定的,通俗点说它的颜色混合方式就好像有红、绿、蓝三盏灯,当它们的光相互叠合的时候,色彩相混,而亮度却等于三者亮度之总和,越混合亮度越高,即加法混合。

自定义颜色的progressBar 自定义颜色rgb是什么意思_自定义颜色的progressBar

 

3.RGB表示形式

浮点表示方式: 取值范围为 0.0 ~ 1.0(如在 OpenGL 中对每个子像素点的表示就是使用这个表示方式)。

整数表示: 取值范围为 0 ~ 255 或者 00 ~ FF(如 RGBA_8888、RGB_565)。

 

4.RGB格式(不管什么格式,从高到低都是BGR排列)

就是说的RGB数据的排列方式以及分量占的位数,这里有个问题就是如何在不知情的情况下去确定图片的RGB格式是什么?

答案:可以去查看图片的属性,里面有图片的深度,如果为24即说明一个像素点就是占24位,当然RGB的格式就是RGB24。

如果要是16位呢,该怎么判断呢,到底是565还是555呢,可以编程随机取一些像素点最高位进行判断,如果都一样则肯定555。

(1)RGB555

每一个像素用 16 个 bit(2个字节)来表示,但最高位不用,R 用 5 个 bit、G 用 5 个 bit、B 用 5 个 bit 表示。

自定义颜色的progressBar 自定义颜色rgb是什么意思_自定义颜色的progressBar_02

实际编程中获取具体像素值方法:(假设 color 为存储某一个像素点的变量,数据为16位)

  • R = color & 0x7C00 // 获取高字节 5 个 bit
  • G = color & 0x03E0 // 获取中间的 5 个 bit
  • B = color & 0x001F // 获取低字节 5 个 bit

(2)RGB565

每一个像素用 16 个 bit(2 个字节)来表示,R 用 5 个 bit、G 用 6 个 bit、B 用 5 个 bit 表示。

自定义颜色的progressBar 自定义颜色rgb是什么意思_自定义颜色的progressBar_03

实际编程中获取具体像素值方法:(假设 color 为存储某一个像素点的变量,数据为16位)

  • R = color & 0xF800 // 获取高字节 5 个 bit
  • G = color & 0x07E0 // 获取中间的 6 个 bit
  • B = color & 0x001F // 获取低字节 5 个 bit

(3)RGB24(24=8+8+8)

每一个像素用 24 个 bit(3个字节)来表示,R、G、B 均用 8 bit 表示。

自定义颜色的progressBar 自定义颜色rgb是什么意思_自定义颜色的progressBar_04

实际编程中获取具体像素值方法:(假设 color 为存储某一个像素点的变量,数据为16位)

  • R = color & 0x0000FF
  • G = color & 0x00FF00
  • B = color & 0xFF0000

(4)RGB32

 每一个像素用 32 个 bit(4个字节)来表示,R、G、B 均用 8 bit 表示,最后 1 个字节保留(或者用作alpha通道用称为ARGB)

自定义颜色的progressBar 自定义颜色rgb是什么意思_RGB像素格式_05

实际编程中获取具体像素值方法:(假设 color 为存储某一个像素点的变量,数据为32位)

  • R = color & 0x0000FF00
  • G = color & 0x00FF0000
  • B = color & 0xFF000000