一 RGB 的意义?
为什么要从RGB 开始讲起呢?
因为最终传输到显卡显示器的颜色都是RGB
即使能处理YUV的API,本质上也是帮你做了从 YUV 到 RGB的转换。
RGB888 表示 R 占8bit,G 占8bit,B 占8bit,也就是每一个都占8比特(一个字节),那么也就说用3个字节就可以表示 RGB888。
用unsigned char 表示 1个字节
我们知道一个字节有8位, 就是说表达的10进制 为 0--255
00000000 ------ 11111111
因此也可以看到一般表示法有 255 255 255 或者 FF FF FF
那么这个一个 RGB888 代表的是啥呢?实际上就是代表的屏幕上的一个像素点。
例如 1280x720 的图片,在不考虑 字节对齐的 概念下,
就有 720 行,每一行有1280个点,每一个点也叫一个像素,都对应 一个 RGB888。
也有RGBA8888 的形式,实际上多了个一A,也占用8bit(一个字节),是透明度的意思,这个一般在用到 两张图片的叠加的时候,这个透明度A会用到。
二 写一个RGB图片的代码。
我们来看一个 6x3 的RGB888图片在内存中应该是什么样子的?
我们知道每一个像素点都是一个RGB888,那么一个像素点应该是8个bit的R + 8个bit的G+8个bit的B 组成的,也可以说成是 1byte的R + 1byte的G + 1byte的B组成
如下是一个像素点,
那么每一行就是有 三个这样的像素点
那么我们有6行,应该就是下面这样了
实际上在内存中上述图片都是顺序排列的,没有列的概念,我们画成上面的样子,只是为了方便理解。
我们使用QT 上显示这个自己想画的图片。
要使用的图片为 QTEvent的重载图像的功能。