2010-01-05 232 views
2

假設我有4個位圖,比如CMYK,它們都是1位/像素,顏色不同,我想將它們轉換爲8位/彩色(24位)位圖,我該怎麼做?1位位圖數據如何轉換爲8位(24bpp)?

如果數據看起來像這樣:

// the Cyan separation 

CCCC CCCC CCCC CCCC CCCC CCCC CCCC CCCC 
... 

// the magenta separation, and so on.. 
MMMM MMMM MMMM MMMM MMMM MMMM MMMM MMMM 
... 

說,青色過的RGB值(0255255)中,在像素0(第一像素),I具有1的值(上),洋紅色的RGB值爲(255,255,0),在同一像素中,值爲1 ..第一個RGB像素是什麼樣的?它會是這樣嗎?

BBBB BBBB GGGG GGGG RRRR RRRR 
// would this 3-byte sequence actually be 255,255,255 
// because the cyan has (0,255,255) and the 
// magenta has (255,255,0)? 

謝謝,只是困惑,如何1bit的分離轉換成8位圖像..謝謝..

回答

4

CMYK是消減色彩系統,而RGB是一種添加劑之一。

如果您的CMY(K)值(1.0,1.0,1.0)爲黑色,而RGB值爲(255,255,255),則爲白色。

青+品紅=藍色:(0,255,255)+(255,0,255)!=(0,0,255)。但不完全是因爲我們談論的是不同的色彩系統。

您需要先在CMYK中構建像素,然後通過執行(R, G, B) = (1-C, 1-M, 1-Y)將它們轉換爲RGB,其大小可以是

爲了1位值轉換爲一個8位的值,你只需要每00x001轉化爲0xFF:由0xFF乘以bitValue

+0

對,我完全忘了..所以當你說我必須在CMYK中構建像素時,這是否意味着它會像4位索引顏色? (CMYK)=(1,1,1,1)...等等?無論如何,這是相當有益的,謝謝..標記爲答案.. – krebstar 2010-01-05 02:09:39

+1

是的,你需要建立4元組的顏色。正如我所說,問題在於將CMYK轉換爲RGB,因爲沒有標準方法,正如@danben所說。 (1-C)(1-K),(1-M)(1-K),(1-Y)(1-K))'。 – Tordek 2010-01-05 02:13:31

+0

對,謝謝.. :)一個近似是足夠好的,我只需要在RGB設備(顯示器)上顯示RGB ..再次感謝:) – krebstar 2010-01-05 02:16:49

3

實際上,對於1位編碼的CMYK,您有16種可能的組合(顏色),其中9種是黑色的。

xxx1 -- black (8 comb's) -- 0x000000 
0000 -- white -- 0xFFFFFF 
1000 -- cyan -- 0x00FFFF 
0100 -- magenta -- 0xFF00FF 
0010 -- yellow -- 0xFFFF00 
1100 -- blue -- 0x0000FF 
1010 -- green -- 0x00FF00 
0110 -- red -- 0xFF0000 
1110 -- black -- 0x000000 

鑑於此,我寧願去以比實際的算法用於從CMYK計算RGB的映射(開關情況,或者如果-別人的)。當然,如果K被設置,則返回提前。

+0

好主意!謝謝! :) – krebstar 2010-01-10 08:28:41