您的位置:首页 > Web前端

S3C6410 FramBuffer编程(四) --- RGB565、RGB24简介,以及RGB565转换为RGB24

2012-10-17 15:00 477 查看
1.

RGB565

  RGB565使用16位表示一个像素,这16位中的5位用于R,6位用于G,5位用于B。程序中通常使用一个字(WORD,一个字等于两个字节)来操作一个像素。当读出一个像素后,这个字的各个位意义如下:

  高字节 低字节

  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

2.


RGB24

  RGB24使用24位来表示一个像素,RGB分量都用8位表示,取值范围为0-255。注意在内存中RGB各分量的排列顺序为:BGR
BGR BGR…。通常可以使用RGBTRIPLE数据结构来操作一个像素,它的定义为:

  typedef struct tagRGBTRIPLE {

  BYTE rgbtBlue; // 蓝色分量

  BYTE rgbtGreen; // 绿色分量

  BYTE rgbtRed; // 红色分量

  } RGBTRIPLE;



3. RGB24 转换为 RGB565
unsigned short rgb24_2_rgb565(unsigned short r, unsigned short g, unsigned short b)

{

        unsigned short ret;

        ret = (r << 8)&0xf800 | (g << 3)&0x07e0 | (b >> 3);

        return ret;

}

详情请见http://blog.csdn.net/anufa/article/details/1529484



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息