Digitális színkódolás
A számokhoz és karakterekhez hasonlóan a számítógép a színeket is bináris formában tudja tárolni és feldolgozni. Ugyanakkor a karakterkódolástól eltérően, ebben az esetben nem lehet sorszámokra hagyatkozni. A színek különböző tulajdonságait kell számszerűsíteni, hogy aztán azokat kettes számrendszerbe alakítva tudjunk velük dolgozni.
Fény és színek
A fény az elektromágneses sugárzásnak az a hullámhossz tartománya, amit a szem érzékelni képes. Az ember esetében ez a kb. 380-780 nanométer közé eső értékeket jelenti.
Színérzet
A fény hullámhossza meghatározza a hozzá társuló színérzetet. A tartomány alján helyezkedik el az ibolya szín (~380 nm), amit a kék, zöld, sárga, narancs és vörös (~780 nm) követ, ami egyben a skála végpontja is az ember számára. Más állatok esetében ez a tartomány szűkebb vagy tágabb lehet. (Például a rovarok képesek az ultraibolya, a kígyók az infravörös fény érzékelésére, a macskák viszont kevesebb színárnyalatot látnak, mint mi emberek.)
A tárgyak színét az határozza meg, hogy milyen hullámhosszú fényt nyelnek el, és milyet vernek vissza. Például a paradicsom azért piros, mert a benne található likopin pigment a piros színt veri vissza, míg a többit elnyeli. Az egyébként átlátszó víz pedig azért kék nagy tömegben, mert a víz részecskéivel ütköző fényrészecskék (fotonok) közül a nagyobb hullámhosszú, kisebb energiájú vöröses sugarak hamarabb elnyelődnek, míg az alacsonyabb hulláhosszú kékes sugarak a nagyobb energiájuk miatt többször is visszaverődnek, mielőtt végül ők is elnyelődnek.
Színkeverés
A különböző színárnyalatok különböző hullámhosszú fényből tevődnek össze. A színek keverésénél viszont meg kell különböztetni a fényforrásból és a tárgyakról visszaverődő fényt.
A fényforrásból érkező különféle hullámhosszú fénysugarak színe összeadódik. Ha a fényforrás egyáltalán nem világít, akkor fekete színt látunk. Ha a fényforrás csak kék és piros fénnyel világít, akkor bíbor (magenta) színt látunk. Ha minden színárnyalat egyforma mennyiségben van jelen, akkor fehér fény alakul ki. Ezt nevezzük összeadó, vagy másnéven additív színkeverésnek.
A tárgyakról visszaverődő fényből azok az árnyalatok kivonódnak, amiket a tárgy elnyel. Ha az adott tárgy minden hullámhosszú fényt visszaver, akkor fehér színűnek látjuk. Ha a tárgy a zöld színt elnyeli, a pirosat és kéket pedig visszaveri, akkor bíbor színűnek látjuk. Ha pedig minden színárnyalatot elnyel, akkor fekete szín alakul ki. Ezt nevezzük kivonó, vagy másnéven szubsztraktív színkeverésnek.
Színkódolás
A színárnyalatok számszerűsítésére sokféle megoldás született. Az alábbiakban a három legelterjedtebb módszerről lesz szó, illetve egy negyedikről, ami ezekre épül.
RGB
Az RGB színmodell azt határozza meg, hogy a kibocsájtott fény milyen arányban tartalmazza a vörös (Red), a zöld (Green) és a kék (Blue) alapszíneket. Az RGB tehát összeadó színkeverésen alapul, amit az informatikában a kijelzőknél és LED fényforrásoknál szoktunk alkalmazni.
A három alapszín mennyiségét hagyományosan egyenként 8 bites számokkal jelöljük. Így a 0 jelenti azt, ha az adott alapszín egyáltalán nem jelenik meg, a 255 pedig azt, ha az adott alapszín maximális mértékben megjelenik. Az rgb(0, 0, 0) a fekete, az rgb(255, 255, 255) a fehér szín kódja. Az így kapott számhármasokból pedig 28×28×28 = 224 = ~16,7 millió különböző színárnyalatot lehet előállítani.
Hexadecimális ábrázolás
Az RGB értékeket át lehet alakítani egy rövidebb formára. A tizes számrendszerben lévő számokat egyesével tizenhatos számrendszerbe kell váltani és egy kettőskereszt karakter után írni. Mivel a nulla minden számrendszerben nulla, a fekete szín kódja a #000000 lesz. A 255 átváltva ff-ként írható fel, így a fehér szín kódja #ffffff lesz. (A kis- és nagybetűs írásmód között nincs különbség.)
RGBA
Egy színárnyalat megadásakor nemcsak annak összetételét, hanem átlátszóságát is meg lehet határozni. Erre szolgál az RGBA jelölés, ahol az A (alfa) érték egy 0.0 és 1.0 közötti tizedes tört. A nulla a teljesen átlátszó, az egy a teljesen átlátszatlan szín. Például az rgba(0, 0, 0, 0.5) az a fekete szín, ami mögött félig látszik a háttér.
HSL
Az RGB színmodellt felfoghatjuk úgy is, mint egy háromdimenziós tér X, Y és Z tengelyeit. Ez a megközelítés viszont az ember számára nehezen átlátható. A számítógépes színpaletták általában ennek egy geometrialilag transzformált verzióját szokták megjelenítni kör vagy kiterített hengerpalást formájában.
A HSL színmodell szintén három értéket használ a teljes színárnyalat összeállításához, de az RGB-től eltérően nem az alapszínek mennyiségével dolgozik.
- A Hue, magyarul színárnyalat határozza meg a három alapszín egymáshoz viszonyított arányát. Az értéke 0-tól 360-ig terjedhet. (0°-nál helyezkedik el a vörös, 120°-nál a zöld, 240°-nál a kék, 360°-nál pedig újra a vörös.)
- A Saturation, magyarul telítettség határozza meg a szín élénkségét. Az értéke 0 és 100 közé eső szám, ahol a 0% szürke, a 100% pedig az a szín, amit a Hue érték meghatároz.
- A Lightness, magyarul világosság határozza meg a szín világosságát. Az értéke 0 és 100 közé eső szám, ahol a 0% a fekete, a 100% a fehér, az 50% pedig az a szín, amit a Hue és a Saturation együtt meghatároz.
A HSL színmodell az RGB-hez hasonlóan szintén kaphat egy negyedik, alfa értéket, ami az átlátszóság mértékét adja meg.
CMYK
A CMYK színmodell, az előző kettővel ellentétben kivonásos színkeverésen alapul, amit nyomtatásnál használunk. Az RGB-hez hasonlóan az alapszínek mennyiségével dolgozik, de az alapszínei a türkiz (Cyan), a bíbor (Magenta) és a sárga (Yellow). Bár elméletben a három szín egyenlő arányú keverékéből fekete szín jön létre, a gyakorlatban a festékek vegyi összetétele miatt sötétbarna keletkezik, ezért külön fekete (blacK) hozzáadására van szükség.
Az alapszínek mennyiségét százalékos formában szoktuk megadni, ahol a 0% azt jelenti, hogy az adott szín egyáltalán nem található meg, a 100% pedig azt, hogy maximális mennyiségben megtalálható.
A CMYK színmodell gyakorlati alkalmazása miatt az átlátszóságot nem értelmezzük.
Név
Bármelyik modellt is használjuk a fentiek közül, több millió színárnyalatot tudunk előállítani. A gyakorlatban viszont ezeknek csak a töredékét használjuk. A könnyebb kezelhetőség érdekében a különféle színpalettákon általában elnevezik az árnyalatokat. Ezek a színpaletták viszont gyakran nem kompatibilisek egymással.
A hétköznapokban gyakran használt X11/W3C színpaletta kb. 150 színárnyalatot nevesít. Így például a "blue" mindig az rgb(0, 0, 255) árnyalatot jelenti, a "lightblue" pedig az rgb(173, 216, 230) árnyalatot.
Példák
Szürkeárnyalatos (szaturáció: 0%)
Név | RGB | Hex | HSL | CMYK | Szín |
---|---|---|---|---|---|
White | rgb(255, 255, 255) | #ffffff | hsl(0, 0%, 100%) | cmyk(0%, 0%, 0%, 0%) | |
Silver | rgb(192, 192, 192) | #c0c0c0 | hsl(0, 0%, 75%) | cmyk(0%, 0%, 0%, 25%) | |
Gray, Grey | rgb(128, 128, 128) | #808080 | hsl(0, 0%, 50%) | cmyk(0%, 0%, 0%, 50%) | |
Black | rgb(0, 0, 0) | #000000 | hsl(0, 0%, 0%) | cmyk(0%, 0%, 0%, 100%) |
Színes (szaturáció: 100%)
Név | RGB | Hex | HSL | CMYK | Szín |
---|---|---|---|---|---|
Red | rgb(255, 0, 0) | #ff0000 | hsl(0, 100%, 50%) | cmyk(0%, 100%, 100%, 0%) | |
Maroon | rgb(128, 0, 0) | #800000 | hsl(0, 100%, 25%) | cmyk(0%, 100%, 100%, 50%) | |
Yellow | rgb(255, 255, 0) | #ffff00 | hsl(60, 100%, 50%) | cmyk(0%, 0%, 100%, 0%) | |
Olive | rgb(128, 128, 0) | #808000 | hsl(60, 100%, 25%) | cmyk(0%, 0%, 100%, 50%) | |
Lime | rgb(0, 255, 0) | #00ff00 | hsl(120, 100%, 50%) | cmyk(100%, 0%, 100%, 0%) | |
Green | rgb(0, 128, 0) | #008000 | hsl(120%, 100%, 25%) | cmyk(100%, 0%, 100%, 50%) | |
Cyan, Aqua | rgb(0, 255, 255) | #00ffff | hsl(180, 100%, 50%) | cmyk(100%, 0%, 0%, 0%) | |
Teal | rgb(0, 128, 128) | #008080 | hsl(180, 100%, 25%) | cmyk(100%, 0%, 0%, 50%) | |
Blue | rgb(0, 0, 255) | #0000ff | hsl(240, 100%, 50%) | cmyk(100%, 100%, 0%, 0%) | |
Navy | rgb(0, 0, 128) | #000080 | hsl(240, 100%, 25%) | cmyk(100%, 100%, 0%, 50%) | |
Magenta, Fuchsia | rgb(255, 0, 255) | #ff00ff | hsl(300, 100%, 50%) | cmyk(0%, 100%, 0%, 0%) | |
Purple | rgb(128, 0, 128) | #800080 | hsl(300, 100%, 25%) | cmyk(0%, 100%, 0%, 50%) |