2010-01-05 8 views
2

Supposant J'ai 4 bitmaps, disons, CMJN, qui sont tous 1bit/pixel et sont de couleurs différentes, et je voulais les convertir en un 8bit/couleur (24bpp) bitmap, comment pourrais-je faire cela?Comment les données bitmap 1 bit sont-elles converties en 8 bits (24bpp)?

si les données se présente comme suit:

// 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 
... 

Say, le cyan a une valeur RVB de (0255255), et au pixel 0 (premier pixel), I a une valeur de 1 (e), et le Magenta avait une valeur RVB de (255,255,0), et au même pixel, avait une valeur de 1 .. A quoi ressemblerait le premier pixel RVB? Est-ce que ça ressemblerait à ça?

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)? 

Merci, tout confus quant à la façon de convertir les séparations en une image 1 bit 8bit .. Merci ..

Répondre

4

CMJN est un système de couleur soustractive, tandis que RVB est un additif un.

Si vous avez une valeur CMY (K) (1,0, 1,0, 1,0), il est noir, tandis qu'une valeur RVB (255, 255, 255), il est blanc.

cyan + magenta = bleu: (0, 255, 255) + (255, 0, 255) = (0, 0, 255). Mais pas exactement, parce que nous parlons de systèmes de couleurs différentes.

Vous devez d'abord construire les pixels en CMJN, puis les convertir en RVB, qui peut être approximé en faisant (R, G, B) = (1-C, 1-M, 1-Y).

Afin de convertir une valeur de 1 bit à une valeur de 8 bits, il vous suffit de transformer chaque 0 en 0x00 et chaque 1 en 0xFF: multiplier par bitValue0xFF.

+0

droit, j'ai complètement oublié .. Alors, quand vous dites que je dois construire les pixels en CMJN, ce que cela signifie que ce serait quelque chose comme la couleur indexée 4 bits? (CMJN) = (1,1,1,1) .. et ainsi de suite? Quoi qu'il en soit, c'est très utile, merci .. Marquer cela comme la réponse .. – krebstar

+1

Oui, vous devez construire le 4-tuple de couleurs. Le problème, comme je l'ai dit, est la conversion CMJN en RVB, car il n'y a pas de manière standard, comme l'a dit @danben. _Peuthaps_ '(R, G, B) = ((1-C) (1-K), (1-M) (1-K), (1-Y) (1-K))'. – Tordek

+0

droit, merci .. :) est une approximation assez bon, je ne le besoin RVB pour afficher sur un périphérique RVB (moniteur) .. Merci encore :) – krebstar

3

Pratiquement, dont 9 sont noirs que vous avez 16 combinaisons possibles avec CMJN codées 1 bits (couleurs).

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 

Donné ce, je préfère aller avec une cartographie (switch-case ou si la elses) qu'un algorithme réel pour le calcul RVB de CMJN. Bien sûr, revenez tôt si K est défini.

+0

Bonne idée! Merci! :) – krebstar

Questions connexes