Mostanában a webes paletta nevű képződménnyel ismerkedem, én ugyanis ezt mindmáig nem ismertem. Lassan hároméves a LAttilaD.org, s azelőtt is évekig volt honlapom, de sose használtam a webes palettát. Egyszerűen színt választottam a dolgoknak, és ha az én gépemen jó volt, akkor jó volt. Nem is múlt idő, ma is így csinálom.
Hogyan kezeli a számítógép a színeket?
A memória bizonyos területei felelősek a képernyő tartalmáért, a különböző géptípusokon más-más rendszer szerint. Általában vannak olyan memóriahelyek (regiszternek hívják őket), amiket a gép grafikus chipje vagy kártyája folyamatosan figyel, és a bennük talált értékeknek megfelelően változtatja meg működését. A memória egy másik, nagyobb területe pedig arra szolgál, hogy ott elhelyezzük a képernyő tartalmát kódoló byte-okat, egyfajta térkép gyanánt: az első byte a képernyő első darabkájáért felelős, a második a második darabkáért, és így tovább, meghatározott sorrendben és rendszer szerint. De most koncentráljunk csak a színekre.
A régebbi gépeken (ide tartoznak a házi számítógépek és a PC-k is a kilencvenes évek nagy részében) általában palettás színkezelést használtak. Ez a következőképpen néz ki. Van egy paletta, ami bizonyos mennyiségű színből áll; 4, 8, 16 vagy 256 szín szokott lenni. A képernyőmemóriában azt tároljuk, hogy egy adott helyen a paletta melyik színe van. Egyes gépeken a paletta színei rögzítve vannak, például az 1-es szín mindig piros, és semmiféle módszerrel nem lehet megoldani, hogy kék legyen, esetleg a pirosnak egy másik árnyalata. Piros és kész. Más gépeken a paletta színei cserélhetőek, mi mondjuk meg, hogy a paletta egyes „festőtégelyeiben” milyen szín legyen, de persze mindegyikben egyszerre csak egy szín lehet; ha az 1-es színt kicseréljük mondjuk zöldre, akkor a képernyő minden 1-es színnel befestett része azonnal zöldre vált, hiszen a grafikus kártya másodpercenként több tucatszor megnézi az összes számára fontos memóriahelyet, és minden alkalommal újrarajzolja a teljes képernyőt.
Ha a paletta színei cserélhetők, akkor is van egy készlet, amiből válogathatunk számukra. Létezik például a PC-ken olyan képernyőmód, ahol 16 színű paletta áll rendelkezésünkre, és a paletta tizenhat tégelyébe 64 különböző színárnyalat valamelyikét tölthetjük. De van olyan is, ahol 256 színű palettával dolgozhatunk, és a tégelyek mindegyikébe 262 ezer szín közül tölthetünk tartalmat.
Egy pillanatra álljunk meg. 262 ezer színről esett szó, és ennél még sokkal nagyobb számok is lesznek. Hogyan létezhet ennyiféle szín?
Mi emberek egészen kevés színt ismerünk: piros, sárga, zöld, kék, fehér, szürke, fekete, lila, barna, nagyjából ezeket. A mi felfogásunkban a jobbra látható képen levő golyók egyszínűek: egy piros, egy kék, egy zöld és egy szürke golyó van a képen. Látunk rajtuk árnyalatokat, de színe mindegyiknek csak egy van.
A számítógép nem így látja, hiszen számára a színek csak számok. Ha két pont nem azonos kódú színt visel, akkor azok különböző színűnek számítanak, akkor is, ha a különbség olyan kicsi, hogy az emberi szem nem látja. A bemutatott képen csak az ember szerint van ötféle szín (piros, zöld, kék, szürke és barna), a számítógép 256 különböző színt lát.
A modern számítógépek már nem palettával kezelik a színeket, hanem RGB módban; ez sokkal szebb képet ad, mert a színek száma nincs korlátozva. Akár a képernyő minden egyes pontját különböző színűre festhetjük, függetlenül attól, hány pont van a képernyőn.
Az RGB a red, green, blue (piros, zöld, kék) rövidítése. Ebből a három színből keverjük ki az összeset. A jobb oldali kép az additív (összeadó) színkeverést mutatja be, amit az RGB rendszer használ. Piros és zöld keveréke sárga lesz, piros és kék keveréke lila, és így tovább.
A különféle árnyalatokat úgy kapjuk meg, hogy a három színt különböző mértékben keverjük össze. Ha mindhárom színösszetevő nulla, akkor feketét kapunk. Ha a feketéhez egyre több és több pirosat adunk, akkor a piros árnyalatait kapjuk meg:
A színösszetevők maximális értéke általában 255, a minimális pedig 0, de ez nem mindig jelenti azt, hogy mindhárom összetevőnek 256-féle lehetséges értéke van: csak akkor, ha nyolc biten kódoljuk őket.
A színek egyik kódolási rendszerét highcolornak hívják, ilyenkor minden pont színének tárolására két byte-ot használunk föl. Két byte-ban 16 bit van, ebből öt-öt jut a pirosra, a zöldre és a kékre; a tizenhatodik bitet vagy felhasználatlanul hagyják (15 bites highcolor 32 768 lehetséges színnel), vagy a zöldhöz rendelik hozzá (16 bites highcolor 65 536 lehetséges színnel), ugyanis erre a színre az emberi szem érzékenyebb. Ilyenkor az egyes színösszetevőknek 32, illetve a 16 bites változatban a zöldnek 64 lehetséges értéke van; 0-tól 255-ig minden nyolcadik, illetve negyedik számot rendeljük hozzá színekhez, a közbeeső számokat kerekítjük.
Ha pontonként 24 bitet használunk, az a truecolor színezés, ilyenkor mindhárom színösszetevőnek nyolc bit jut, és összesen 16 777 216 szín közül válogathatunk. A truecolor másik változata a 32 bites, amikor a további nyolc bitet az alfacsatorna tárolására használjuk fel: ez a szín átlátszóságáról ad információt.
Ha egy honlapon akarunk színeket használni, a teljes truecolor skála rendelkezésünkre áll. Például HTML-ben a betűk színét így adjuk meg:
<font color=#xxxxxx>FELIRAT</font>
– itt xxxxxx jelképezi a színt, hexadecimálisan, rrggbb formában. Például:
8CF1D2
EFC9DB
F9DFC7
De ha ezeket így ki is használjuk, akkor esély van arra, hogy a színeink nem minden böngészőben fognak szépen megjelenni. Sokhelyütt csak az úgynevezett webbiztos színeket lehet használni.
000 | 003 | 006 | 009 | 00C | 00F | 030 | 033 | 036 | 039 | 03C | 03F | 060 | 063 | 066 | 069 | 06C | 06F | 090 | 093 | 096 | 099 | 09C | 09F |
0C0 | 0C3 | 0C6 | 0C9 | 0CC | 0CF | 0F0 | 0F3 | 0F6 | 0F9 | 0FC | 0FF | 300 | 303 | 306 | 309 | 30C | 30F | 330 | 333 | 336 | 339 | 33C | 33F |
360 | 363 | 366 | 369 | 36C | 36F | 390 | 393 | 396 | 399 | 39C | 39F | 3C0 | 3C3 | 3C6 | 3C9 | 3CC | 3CF | 3F0 | 3F3 | 3F6 | 3F9 | 3FC | 3FF |
600 | 603 | 606 | 609 | 60C | 60F | 630 | 633 | 636 | 639 | 63C | 63F | 660 | 663 | 666 | 669 | 66C | 66F | 690 | 693 | 696 | 699 | 69C | 69F |
6C0 | 6C3 | 6C6 | 6C9 | 6CC | 6CF | 6F0 | 6F3 | 6F6 | 6F9 | 6FC | 6FF | 900 | 903 | 906 | 909 | 90C | 90F | 930 | 933 | 936 | 939 | 93C | 93F |
960 | 963 | 966 | 969 | 96C | 96F | 990 | 993 | 996 | 999 | 99C | 99F | 9C0 | 9C3 | 9C6 | 9C9 | 9CC | 9CF | 9F0 | 9F3 | 9F6 | 9F9 | 9FC | 9FF |
C00 | C03 | C06 | C09 | C0C | C0F | C30 | C33 | C36 | C39 | C3C | C3F | C60 | C63 | C66 | C69 | C6C | C6F | C90 | C93 | C96 | C99 | C9C | C9F |
CC0 | CC3 | CC6 | CC9 | CCC | CCF | CF0 | CF3 | CF6 | CF9 | CFC | CFF | F00 | F03 | F06 | F09 | F0C | F0F | F30 | F33 | F36 | F39 | F3C | F3F |
F60 | F63 | F66 | F69 | F6C | F6F | F90 | F93 | F96 | F99 | F9C | F9F | FC0 | FC3 | FC6 | FC9 | FCC | FCF | FF0 | FF3 | FF6 | FF9 | FFC | FFF |