Tartalom

Színek a számítógépben

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?

Memória

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.

Paletta

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.

Mi az, hogy szín?

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.

RGB

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:
  


  Ha a zöld összetevőt növeljük a piros helyett, akkor a zöld árnyalatait kapjuk:
  

  Ha pedig a kéket, akkor ennek az árnyalatait:
  

  Ha mindhármat egyszerre, akkor a szürke árnyalatai jönnek ki; ha mindhárom színösszetevő maximális, akkor fehéret kapunk.
  

  Nézzük, mi lesz, ha két színösszetevőt egyszerre növelünk, miközben a harmadik nulla marad. Piros és zöld:
  

  Piros és kék:
  

  Zöld és kék:
  

  Ha egy vagy két összetevőt úgy növelünk, hogy a többi végig maximális, akkor az alap- és a kevert színektől a fehérig juthatunk el.
  A piros nő:
  A zöld:
  A kék:
  A piros és a zöld együtt:
  A piros és a kék:
  A zöld és a kék:
  De ezzel még csak a lehetőségek töredékét láttuk, hiszen amikor két színt változtattunk, azokat mindig együtt, és a harmadik vagy nulla volt, vagy maximális.
  Ha a piros összetevő kétszer akkora, mint a zöld, a kék pedig nulla, akkor a barnákat és narancsokat kapjuk meg:
  

  Ha a piros nulláról indul, a kék maximumról, és egymás felé tartanak, miközben a zöld végig nulla, akkor kék–piros átmenetet kapunk:
  

  Zöld–piros átmenet ugyanígy:
  

  Kék–zöld átmenet:
  

  Ha a kék–piros átmenetet úgy csináljuk meg, hogy hozzáadunk 50%-os fényességű zöldet, egészen más színskálát kapunk:
  

  Ezzel bármeddig el lehet játszadozni, a lehetőségek száma végtelen.
  Persze nemcsak egy dimenzióban keverhetünk. A következő kép kétdimenziós keverést mutat, ahol a piros, a sárga, a lila és a fehér ad ki összesen négyezer színkombinációt. Sok rajzolóprogram ilyen képeket kínál, amikor a felhasználó színt akar választani a tollához.
  

Highcolor, truecolor

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.

Webcolor

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.
  

00000300600900C00F03003303603903C03F06006306606906C06F09009309609909C09F
0C00C30C60C90CC0CF0F00F30F60F90FC0FF30030330630930C30F33033333633933C33F
36036336636936C36F39039339639939C39F3C03C33C63C93CC3CF3F03F33F63F93FC3FF
60060360660960C60F63063363663963C63F66066366666966C66F69069369669969C69F
6C06C36C66C96CC6CF6F06F36F66F96FC6FF90090390690990C90F93093393693993C93F
96096396696996C96F99099399699999C99F9C09C39C69C99CC9CF9F09F39F69F99FC9FF
C00C03C06C09C0CC0FC30C33C36C39C3CC3FC60C63C66C69C6CC6FC90C93C96C99C9CC9F
CC0CC3CC6CC9CCCCCFCF0CF3CF6CF9CFCCFFF00F03F06F09F0CF0FF30F33F36F39F3CF3F
F60F63F66F69F6CF6FF90F93F96F99F9CF9FFC0FC3FC6FC9FCCFCFFF0FF3FF6FF9FFCFFF

  A kép a 216 webbiztos színt ábrázolja, hexadecimális kódjaikkal. A kódok rövidítve vannak: C9F helyett CC99FF-et kell olvasni. Nem kell megtanulni őket: minden olyan szín webbiztos, aminek mindhárom színösszetevője hexadecimálisan 00, 33, 66, 99, CC vagy FF. (Tízes számrendszerben: 0, 51, 102, 153, 204 vagy 255.)

»»»»»»