2011-10-05 108 views
3

我想知道什麼是將24位RGB顏色(每種顏色8位)轉換爲8位顏色(2位藍色,3綠色,3紅色)。我想要C代碼來做到這一點。如何將24位RGB轉換爲8位RGB

+0

請添加有關編程語言和/或色彩表現細節。 –

+0

對不起,我完全忘了 – Gootik

回答

6

8位RGB通常是索引(palettized)顏色格式,請參閱Palette (computing)

儘管如此,從24條bpp中獲得8條bpp非常簡單 - 您需要去除最低有效位並將這些位合併爲每個像素的單個字節值。 AFAIK它不是標準或衆所周知的像素顏色表示。

+0

你確定應該捨棄不太重要的字節而不是近似嗎? –

+2

有些選項,例如抖動。理解和實現最簡單的方法是丟棄比特並減少細節,以適應固定數量的比特。在此之上的改變是增加更多的噪音,但留下更好的主觀質量。無論如何,我敢打賭,如果OP向後退一步澄清問題,就會出現索引顏色格式。 –

0

要轉換的8位[0 - 255]值變換爲3位[0,7]中,0是沒有問題的,但要記住255應該轉換爲7,所以式應RED3 = Red8 * 7/255

24位顏色轉換成8位(RRRGGGBB),

8bit Color = (Red * 7/255) << 5 + (Green * 7/255) << 2 + (Blue * 3/255)