Tag - czyli o kolorach w informatyce

RGB, czyli o kolorach w informatyce

RGB

RGB (ang. Red Green Blue), to zestaw trzech kolorów, które odpowiadają za wyświetlanie określonej barwy na ekranie monitora. Paletę barw RGB tworzą więc 3 kanały: czerwony, zielony i niebieski. Każdy inny kolor, który widzimy na ekranie naszego monitora, stanowi efekt zmieszania tych trzech barw składowych, tak jak np. chcielibyśmy zmieszać 3 farby z trzech różnych kubełków, uzyskalibyśmy czwarty kolor, będący wynikiem mieszania.

Jak więc monitor przetwarza a następnie wyświetla określone kolory? Otóż każdy kanał RGB, może przechowywać maksymalnie 28, czyli 256 kombinacji (od 0 do 255) odcienia danej barwy. W sumie więc dostajemy możliwość utworzenia aż 224 kombinacji kolorów (28 x 28 x 28), co daje niebagatelną liczbę wynoszącą: 16777216, czyli ok. 17 mln barw! No dobrze – zapytamy – ale jaki jest związek modelu RGB z systemem HEX (heksadecymalnym) i binarnym? Otóż związek jest bardzo ścisły, o czym można przekonać się już w przypadku kodowania barw językiem CSS i deklarowania ich w kodzie HTML. Wiadomo bowiem, że każdy kolor arkusza stylów kaskadowych można zaprezentować na dwa sposoby.

Pierwszym z nich jest zwykłe wprowadzenie nazwy koloru po angielsku (nazwy angielskie dotyczą tylko najważniejszych kolorów), np. gdy chcemy w kodzie HTML lub CSS
zadeklarować barwę jakiegoś elementu, piszemy po prostu:

color=”white” <!– przykład w kodzie HTML –>
color: #FFFFFF /* przykład w kodzie CSS */

O ile pierwsza linijka jest w pełni zrozumiała (white to oczywiście kolor biały), o tyle druga już nie bardzo: cóż bowiem oznacza to tajemnicze #FFFFFF? I tutaj właśnie z pomocą przychodzą nam liczby szesnastkowe: # oznacza deklarowanie liczby heksadecymalnej, natomiast FFFFFF to nic innego jak trzy razy po FF, a FF(16)= 255(10), więc kolor biały otrzymamy mieszając poszczególne kanały RGB po najwyższych wartościach: R255, G255, B255. Wszystko to możemy sprawdzić w programach graficznych, np. Adobe Photoshop, CorelDRAW, czy GIMP, a nawet (choć w bardzo ograniczony sposób) w windowsowym Paincie.

Kolory RGB, CMYK, HSB i Lab oraz ich odpowiednik w systemie hexadecymalnym w Próbniku kolorów programu Adobe Ps CS4 (cyberhub.pl)

Kolory RGB, CMYK, HSB i Lab oraz ich odpowiednik w systemie hexadecymalnym w Próbniku kolorów programu Adobe Ps CS4 (cyberhub.pl)

Pytanie brzmi: dlaczego nie zadeklarować tego w bitach metodą zero-jedynkową? Przecież liczby szesnastkowe łatwo można konwertować do postaci dziesiątkowej, a następnie binarnej. Odpowiedź brzmi: dla przejrzystości. Jeśli chcielibyśmy pisząc naszą stronę www zadeklarować powyższą barwę białą binarnie, otrzymalibyśmy taką sekwencję: 100000000(2)100000000(2)100000000(2), czyli oczywiście znów 3 razy po 255 (tyle, że dwójkowo).
Nie musimy chyba mówić, że jest to po pierwsze niepraktyczne, a po drugie z lekka uciążliwe. Dlatego zostajemy przy starym dobrym HEX’ie.

Inne przykłady kolorów:

żółty:
Ang.: yellow
RGB: R255 G255 B00
HEX: #FFFF00
BIN: 11111111(2)11111111(2)000000000(2) (niedeklarowalny)

jeden z odcieni pomarańczowego:
Ang.: coral
RGB: R255 G127 B80
HEX: #FF7F50
BIN: 11111111(2)01111111(2)01010000(2) (niedeklarowalny)

jeden z odcieni zielonego:
brak nazwy angielskiej
RGB: R219 G154 B52
HEX: #DB9A34
BIN: 11011011(2)10011010(2)00110100(2) (niedeklarowalny)