1. 程式人生 > >16位bmp檔案中RGB555轉RGB565演算法

16位bmp檔案中RGB555轉RGB565演算法

       做tft彩屏顯示圖片的時候,顯示16位點陣圖,顯示屏的顯示模式為RGB565。使用img2lcd轉換後的16位bmp,顯示出來後,顏色有偏差;轉換為565格式的bin檔案,顯示完全正常,可以確定轉換為bmp後,格式為RGB555。網上查詢相關資料顯示,Windows 圖片檢視器顯示正常的圖片,均為RGB555格式,系統自帶畫圖畫圖工具儲存時,不支援將檔案儲存為16位點陣圖格式。

        以下為555轉565的程式片段,轉換後的結果和使用img2lcd軟體儲存為565格式的結果完全相同。轉換的結果其實就是將原來5位G擴充套件為6位。即左移1為,然後右邊補0。這樣轉換後,和img2lcd軟體轉換的結果對比,發現有一部分資料不一致。原來移位後,img2lcd軟體在右邊不是全都補0,而是看原來G中的最後1位若為1,則補1,若為0,則補0,程式中最後加入一句判斷,這樣轉換後,就完全一致了。

char c1=0x6b,c2=0x7b;    // 0rrr rrgg(c1) gggb bbbb(c2) 555
char c3,c4;                       // rrrr rggg(c3) gggb bbbb(c4) 565
c3= c1<<1;
c3|= c2>>7;

c4 = c2<<1;
c4&= 0xc0;
c4|= c2&0x1f;
if(c2&0x20) c4+=0x20;