程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> RGB565與RGB888的轉換

RGB565與RGB888的轉換

編輯:關於C++

RGB565的顏色格式RGB555色彩格式是相同的,除了6位是綠色的價值,

而不是5。因此,所有16位 都在使用。該組織在圖像緩沖區的像素是從左至右的權

利,自下而上。

RGB565格式說明:

RGB565彩色模式, 一個像素占兩個字節, 其中:第一個字節的前5位用

來表示R(Red),第一個字 節的後三位+第二個字節的前三位用來表示G(Green),

第二個字節的後5位用來表示B(Blue)。

如 :15 14 13 12 11 10 9 8 , 7 6 5 4 3 2 1 0

[RGB565]

0x00??+1 RRRRRGGG

0x00??+0 GGGBBBBB

R 5   0xf8    

G 6   0xe0 0x07

B 5   0x1f

[RGB24]

R G B

addr:1 2 3

對於RGB888來說,每個像素由3個字節組成,R->8bit,G- >8bit,B->8bit;

RGB565 的每個pixels是由2字節組成,R->5bit,G->6bit,B- >5bit。轉換的思

路是取出原圖的點,對每個采樣進行運算。

RGB565

STEP1(第二個 字節) R 取得前5bit  & 0xf8

G 取得後3bit  & 0xe0 並右移5bit 並入R;

STEP2(第一個字節) 取得第4-6bit & 0x1c 並左移3bit 並入B

B 取得前5bit  & 0xf8 並右移3bit 與G中間3位合並

R4  R3  R2  R1  R0  G5  G4  G3 | G2  G1  G0  B4  B3  B2  B1  B0

 A[] 15  14  13  12  11  10   9   8 |  7   6   5   4   3   2   1   0

下面就以實例來說明問 題:

void RGB565_to_RGB24(unsigned char *source,unsigned char *convert,int width)   

  
{     
    int i;     
    for (i=0 ;i<width ;i++)     
    {     
        * convert++  =  (*source)<<3; /* B */
        * convert++  =  (*(source+1) & 0x07)<<5 | (*source & 0xe0)>>3; 

/* G */
        * convert++  =  *(source+1); /* R */
          source    +=2;     
    }     
}

也可用下面這種方法實現轉換,其道理是一樣的:

void RGB16toRGB24(unsigned 

char *rgb24,unsigned char *rgb16)     
{     
    int i,j;     
    unsigned short *dot;     
    for(i = 0; i < v_info.xres; i++)     
    {     
        for(j = 0; j < v_info.yres; j++)     
        {     
            dot = (unsigned short *)(rgb16 + i * v_info.yres + j);     
            *rgb24 = (((*dot)&0x01F) << 3);   //R     
            rgb24++;     
            *rgb24 = (((*dot)&0x03E0) >> 2);  //G     
            rgb24++;         
            *rgb24 = (((*dot)&0x7C00) >> 7);  //B     
            rgb24++;             
        }     
    }     
}

本文出自 “驿落黃昏” 博客,請務必保留此出處 http://yiluohuanghun.blog.51cto.com/3407300/860523

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved