我注意到我的RGB888 24位到16位RGB565之間的轉換程序導致顏色逐漸變暗,每次轉換髮生時......公式使用像這樣的線性插值...RGB 24位到16位顏色轉換 - 顏色變暗
typedef struct _RGB24 RGB24;
struct _RGB24 {
BYTE B;
BYTE G;
BYTE R;
};
RGB24 *s; // source
WORD *d; // destination
WORD r;
WORD g;
WORD b;
// Code to convert from 24-bit to 16 bit
r = (WORD)((double)(s[x].r * 31)/255.0);
g = (WORD)((double)(s[x].g * 63)/255.0);
b = (WORD)((double)(s[x].b * 31)/255.0);
d[x] = (r << REDSHIFT) | (g << GREENSHIFT) | (b << BLUESHIFT);
// Code to convert from 16-bit to 24-bit
s[x].r = (BYTE)((double)(((d[x] & REDMASK) >> REDSHIFT) * 255)/31.0);
s[x].g = (BYTE)((double)(((d[x] & GREENMASK) >> GREENSHIFT) * 255)/63.0);
s[x].b = (BYTE)((double)(((d[x] & BLUEMASK) >> BLUESHIFT) * 255)/31.0);
從16位到24位的轉換是相似的,但與反向插補......我不明白的價值觀是如何保持越來越低,每次一顏色是循環的方程,如果他們是相反的......原來沒有演員增加一倍,但我想如果我把它作爲浮點除法它不會有衰退...但它仍然...
很酷......讓我試試看......謝謝你的想法 – oldSkool 2010-11-09 06:27:33