@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: 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.) @blogf[!]