@t[Színek a számítógépben]~~META:date created = 2006-12-19~~
Mostanában a //webes paletta// nevű képződménnyel ismerkedem, én ugyanis ezt mindmáig nem ismertem. Lassan hároméves a [[http://lattilad.org|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 (//regiszter//nek 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és//t 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?
{{ 980-raytrace.gif}} 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.
{{ 980-rgbs.png}} 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és//t 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:
@center[{{980-r.png}}]
Ha a zöld összetevőt növeljük a piros helyett, akkor a zöld árnyalatait kapjuk:
@center[{{980-g.png}}]
Ha pedig a kéket, akkor ennek az árnyalatait:
@center[{{980-b.png}}]
Ha mindhármat egyszerre, akkor a szürke árnyalatai jönnek ki; ha mindhárom színösszetevő maximális, akkor fehéret kapunk.
@center[{{980-rgb.png}}]
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:
@center[{{980-rg0.png}}]
Piros és kék:
@center[{{980-rb0.png}}]
Zöld és kék:
@center[{{980-gb0.png}}]
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ő: {{980-rff.png}}
A zöld: {{980-gff.png}}
A kék: {{980-bff.png}}
A piros és a zöld együtt: {{980-rgf.png}}
A piros és a kék: {{980-rbf.png}}
A zöld és a kék: {{980-gbf.png}}
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:
@center[{{980-r2g.png}}]
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:
@center[{{980-rxb.png}}]
Zöld–piros átmenet ugyanígy:
@center[{{980-rxg.png}}]
Kék–zöld átmenet:
@center[{{980-gxb.png}}]
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:
@center[{{980-rxb5.png}}]
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.
@center[{{980-space.png}}]
==== 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 //highcolor//nak 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:
FELIRAT
– itt //xxxxxx// jelképezi a színt, hexadecimálisan, rrggbb formában. Például:
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 |