Model RGB dla ekranów i CMYK dla druku, zapis koloru szesnastkowo, głębia kolorów jako liczba bitów na piksel i wzór na rozmiar nieskompresowanego obrazu.
RGB to model addytywny, czyli oparty na dodawaniu światła. Trzy składowe – czerwona, zielona i niebieska – świecą z różną intensywnością, a ich suma daje barwę. Wszystkie trzy na maksimum dają biel, wszystkie na zero dają czerń. Tak działa każdy ekran, bo ekran sam emituje światło.
CMYK to model subtraktywny, oparty na odejmowaniu światła. Farba nie świeci – pochłania część widma, a odbija resztę. Składowe to cyjan, magenta, żółty i czarny. Im więcej farby, tym ciemniej: brak farby to biel papieru, komplet składowych to czerń. Czwarta składowa, czarna, jest dodana z praktycznych powodów: zmieszanie trzech pozostałych daje brudny brąz zamiast czystej czerni, a osobny czarny tusz jest tańszy i daje ostrzejszy druk tekstu.
Głębia kolorów to liczba bitów przypadająca na jeden piksel. Im więcej bitów, tym więcej możliwych barw: 1 bit daje 2 kolory, 8 bitów – 256, a 24 bity – ponad 16 milionów. Ta ostatnia wartość to popularny true color, po 8 bitów na każdą składową RGB. Liczbę dostępnych kolorów liczy się jako 2 do potęgi liczby bitów. Działa to też w drugą stronę: żeby zapisać 256 kolorów, potrzeba 8 bitów, bo 2 do potęgi 8 to dokładnie 256.
Stąd wynika wzór na rozmiar obrazu bez kompresji: szerokość razy wysokość razy głębia kolorów. Wynik wychodzi w bitach, więc trzeba go jeszcze podzielić przez 8, żeby dostać bajty – jednostki opisuje hasło bit, bajt i jednostki informacji.
Cztery zasady zamykają temat:
Sąsiednie tematy: czym obraz z pikseli różni się od opisanego wzorami, tłumaczy grafika rastrowa i wektorowa, a co potrafi konkretny format zapisu – formaty graficzne.
W praktyce kolor RGB zapisuje się trzema liczbami od 0 do 255 albo szesnastkowo, po dwie cyfry na składową. Czerwony to #FF0000, zielony #00FF00, niebieski #0000FF, biały #FFFFFF, czarny #000000. Zamianę par szesnastkowych na liczby opisuje hasło binarny ↔ ósemkowy ↔ szesnastkowy.
Skoro każda składowa ma 256 poziomów, wszystkich kombinacji jest 256 do potęgi trzeciej, czyli 16 777 216 kolorów – i stąd bierze się 24-bitowa głębia.
Ten sam kolor ma dwa równoważne zapisy: #E9967A w arkuszu stylów i rgb(233, 150, 122) w zapisie dziesiętnym. Pierwsza para znaków to zawsze składowa czerwona, druga zielona, trzecia niebieska – kolejność liter w skrócie RGB jest jednocześnie kolejnością par w zapisie.
Policzmy rozmiar obrazu 800 na 600 pikseli w 24-bitowym kolorze:
Cała trudność tkwi w konsekwentnym przeliczaniu jednostek. Warto zapisywać każdy krok osobno.
funkcja rozmiar_w_bajtach(szerokosc, wysokosc, bity_na_piksel): piksele ← szerokosc * wysokosc bity ← piksele * bity_na_piksel zwróć bity div 8
| Dane wejściowe | Wartość |
|---|---|
| Zapis koloru w arkuszu stylów | #E9967A |
| Model barw | RGB, czyli ekran |
| Głębia bitowa | 24 bity na piksel, po 8 na składową |
| Składowa | Zapis szesnastkowy | Wartość dziesiętna | Udział maksimum |
|---|---|---|---|
| Czerwona (R) | E9 | 233 | 91 procent |
| Zielona (G) | 96 | 150 | 59 procent |
| Niebieska (B) | 7A | 122 | 48 procent |
| Razem | #E9967A | rgb(233, 150, 122) | 24 bity, czyli 3 bajty na 1 piksel |
| Częsty błąd | E9 czytane dziesiętnie | 9 zamiast 233 | to zapis szesnastkowy, nie dziesiętny |
| Głębia (bity na piksel) | Liczba kolorów | Rozmiar w bajtach | Uwaga |
|---|---|---|---|
| 1 | 2 | 115 200 | czarno-biały |
| 2 | 4 | 230 400 | paleta |
| 4 | 16 | 460 800 | paleta |
| 8 | 256 | 921 600 | bajt na piksel |
| 8 (skala szarości) | 256 odcieni szarości | 921 600 | tyle samo |
| 16 | 65 536 | 1 843 200 | high color |
| 24 | 16 777 216 | 2 764 800 | true color |
| 32 | 16 777 216 barw i 256 poziomów alfa | 3 686 400 | alfa |
| 24 po kompresji | 16 777 216 | mniej niż 2 764 800 | kompresja |
| Cecha | RGB | CMYK |
|---|---|---|
| Zasada | dodawanie światła | pochłanianie światła |
| Składowe | czerwony, zielony, niebieski | cyjan, magenta, żółty, czarny |
| Maksimum wszystkich | biel | czerń |
| Brak wszystkich | czerń | biel papieru |
| Zastosowanie | ekrany | druk, poligrafia |
| Liczba składowych | 3 | 4 |
| Typowy zapis | #RRGGBB albo rgb(r, g, b) | procenty czterech farb |
| Nazwa angielska | additive model (Red, Green, Blue) | subtractive model (Cyan, Magenta, Yellow, Key) |
Plik do druku przygotowany w RGB. Uczeń zaznacza, że plakat lepiej złożyć w RGB, bo „RGB ma więcej kolorów". Zdanie jest fałszywe: drukarka i tak rozłoży barwy na cztery farby, a jaskrawe kolory RGB, których farbą nie da się uzyskać, zostaną przy konwersji przybliżone – wydruk wyjdzie inny, niż wyglądał na ekranie. Reguła jest krótka: co świeci, to RGB; co odbija światło, to CMYK.
Głębia pomylona z liczbą kolorów. „8 bitów na piksel" to nie osiem kolorów, tylko 2 do potęgi 8, czyli 256. W drugą stronę tak samo: 16 kolorów nie wymaga 16 bitów, tylko 4, bo 2 do potęgi 4 to 16. Jeśli w zadaniu pada liczba kolorów, a we wzorze ma stanąć głębia, najpierw zamień jedno na drugie – dopiero potem mnóż przez liczbę pikseli.
Rachunek zrobiony w bitach, odpowiedź zaznaczona w bajtach. Obraz 1280 na 720 pikseli po 24 bity to 22 118 400 bitów i dopiero po podzieleniu przez 8 – 2 764 800 bajtów. Dystraktory w arkuszu z 2018 roku są zbudowane dokładnie na tym potknięciu: 921 600 to sama liczba pikseli (pominięte mnożenie przez głębię), a wartości w kilobajtach i megabajtach nie pasują do żadnego poprawnego przeliczenia tego wyniku. Zawsze dopisuj jednostkę przy każdej linijce rachunku.
Zapis #E9967A czytany jako trzy liczby dziesiętne. Sześć znaków to trzy pary szesnastkowe, a nie liczby „E9", „96" i „7A" w zapisie dziesiętnym ani jedna wielka liczba. Składowa czerwona to E9, czyli 233 – i tylko taka odpowiedź jest w kluczu z czerwca 2023. Gdy w parze pojawia się litera, to sygnał, że zapis na pewno nie jest dziesiętny.
Zapomniany kanał alfa przy 32 bitach. Przy głębi 32 bitów uczeń liczy rozmiar jak dla 24 bitów, bo „barw i tak jest 16 777 216". Barw rzeczywiście tyle samo, ale piksel zajmuje 4 bajty zamiast 3, więc ten sam obraz jest o jedną trzecią większy: 3 686 400 zamiast 2 764 800 bajtów. Do wzoru wstawiasz zawsze pełną głębię, razem z kanałem przezroczystości.
#FFFFFF to biel, #000000 to czerń, każda para znaków to jedna składowa w zapisie szesnastkowym.Dane do ćwiczenia:
| Dane | Wartość |
|---|---|
| Rozdzielczość obrazu | 1280 na 720 pikseli |
| Głębia bitowa | 24 bity na piksel |
| Kolor tła | #E9967A |
| Kompresja | brak |
Uzupełnij tabelę – samymi liczbami, bez jednostek i bez spacji:
| Pytanie | Odpowiedź |
|---|---|
| Ile pikseli ma ten obraz? | |
| Ile bitów zajmuje ten obraz bez kompresji? | |
| Ile bajtów zajmuje ten obraz bez kompresji? | |
| Ile bajtów zajmuje jeden piksel przy głębi 24 bitów? | |
| Ile bajtów zajmowałby ten sam obraz przy głębi 32 bitów? | |
| Ile kolorów koduje głębia 8 bitów? | |
| Ile bitów wystarczy na paletę 16 kolorów? | |
| Ile wynosi dziesiętnie składowa czerwona koloru E9967A? |
Barwy na ekranie miesza się w modelu , a plakat oddawany do drukarni składa się w modelu , w którym litera K oznacza kolor czarny.
Bo modele mają różne zakresy odwzorowania barw. Część jaskrawych kolorów RGB jest nieosiągalna dla farb i przy konwersji zostaje przybliżona najbliższym możliwym odcieniem.
C to cyan, czyli cyjan, M to magenta, Y to yellow, czyli żółty, a K to black, czyli czarny. Litera K nie pochodzi od słowa „kolor" ani od „contrast" – to skrót od angielskiej nazwy czerni, w poligrafii nazywanej kolorem kluczowym (key).
Czerwony na maksimum (255), zielony na poziomie 136 i brak niebieskiego – czyli odcień pomarańczowego.
Dodatkową składową przezroczystości, oznaczaną RGBA. Nie jest barwą, lecz informacją o tym, jak bardzo piksel przepuszcza to, co pod nim. 32-bitowa głębia to zwykle 24 bity koloru plus 8 bitów kanału przezroczystości – liczba widocznych barw pozostaje taka sama jak przy 24 bitach.
Osiem, bo 2 do potęgi 8 daje dokładnie 256. Analogicznie 16 kolorów wymaga 4 bitów, a 2 kolory jednego bitu.
Pomnóż szerokość przez wysokość i przez głębię bitową – wynik jest w bitach. Podziel go przez 8, żeby dostać bajty, a potem przez 1024, żeby dostać kilobajty. Dla obrazu 1280 na 720 pikseli przy 24 bitach wychodzi 22 118 400 bitów, czyli 2 764 800 bajtów.
Bo formaty zapisu stosują kompresję, a wzór podaje rozmiar surowych danych – tyle zajmowałby obraz zapisany piksel po pikselu.
Do tego hasła nie mamy jeszcze przypisanych pojedynczych zadań. Cały spis zadań maturalnych z tego działu jest tutaj:
Zagadnienia z tego samego obszaru matury – warto je powtórzyć razem: