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

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


你可能感兴趣的:(数据结构,编程,c,struct,byte)