2011-05-31 20 views
1

現在有一點腦屁,但我需要幫助將圖像從ARGB1555轉換爲RGB8888。將位圖從ARGB1555轉換爲RGB8888

我已經有遍歷每個像素的循環(本質上是從文件中讀取u16s),我想將它們存儲爲u32。我想我會用一些二進制運算符來獲取2-6,7-11和12-16位,然後使用另一個運算符來以某種方式將每種顏色改變爲它們各自的RGB8888值......但是我真的不想這樣做,不知道該怎麼做。

回答

2

你沒有狀態是什麼語言你寫它,但這裏是它的一個C++函數: 它發生在ARGB1555的16位整數,並返回一個32位整數ARGB8888

unsigned int ARGB1555toARGB8888(unsigned short c) 
{ 
    const unsigned int a = c&0x8000, r = c&0x7C00, g = c&0x03E0, b = c&0x1F; 
    const unsigned int rgb = (r << 9) | (g << 6) | (b << 3); 
    return (a*0x1FE00) | rgb | ((rgb >> 5) & 0x070707); 
} 

參考:http://cboard.cprogramming.com/c-programming/118698-color-conversion.html

+0

謝謝!我的「嘗試」實際上有點接近! – 2011-05-31 23:10:22