Цветовая модель RGB: как кодируется один пиксель
Цветовая модель RGB описывает любой цвет на экране как смесь трёх базовых составляющих: красной (Red), зелёной (Green) и синей (Blue). Каждый пиксель изображения хранит не «название цвета», а три числа - яркости этих трёх каналов. Складываясь, они дают итоговый оттенок: это аддитивная модель, в которой нулевые каналы означают чёрный цвет, а все каналы на максимуме - белый. Ниже разберём, как именно кодируется один пиксель, сколько бит он занимает, как из глубины цвета получается число различимых оттенков и как перевести значения каналов в привычный HEX-код. Чтобы сразу увидеть связь чисел и цвета, покрутите калькулятор ниже: он показывает образец цвета, его HEX, число бит на пиксель и общее число цветов, а дальше мы разберём каждую формулу строго.
Что такое канал и глубина цвета
Канал - это одна из трёх базовых составляющих цвета. У каждого канала есть числовое значение яркости: чем оно больше, тем сильнее «горит» соответствующий цвет. Сколько разных значений может принимать канал, определяет глубина цвета - число бит, отведённых на один канал. Обозначим её . Тогда канал принимает различных значений, от до .
Самый распространённый стандарт - 8 бит на канал, его называют TrueColor. При каждый канал хранит число от до :
Значение означает, что канал полностью погашен, а - что он на максимуме. Например, чистый красный - это , белый - , серый средней яркости - . Менять глубину канала и сразу видеть, как сужается или расширяется диапазон значений, можно прямо в калькуляторе выше.
Сколько бит занимает один пиксель
Пиксель хранит сразу три канала, поэтому число бит на пиксель равно глубине канала, умноженной на три:
Для стандартной глубины это даёт бита на пиксель, то есть ровно байта. Отсюда и название формата - 24-битный цвет. Если к трём каналам добавляют четвёртый, альфа-канал прозрачности (модель RGBA), пиксель занимает уже бита, но сам цвет по-прежнему задают только три цветовых канала.
Зная вес одного пикселя, легко оценить объём всего несжатого изображения: нужно умножить число пикселей на число байт в пикселе. Картинка при 8 битах на канал содержит около двух миллионов пикселей, и каждый весит 3 байта.

На схеме видно, что пиксель - это просто три байта, лежащие подряд: первый отвечает за красный, второй за зелёный, третий за синий. Никакой дополнительной информации о цвете в пикселе нет - только три числа.
Сколько всего цветов кодирует модель RGB
Каждый из трёх каналов независимо принимает значений. Полное число различимых цветов - это число всех сочетаний трёх каналов, то есть произведение возможностей:
Для глубины получаем знаменитое число:
Важно почувствовать, как быстро растёт это число: увеличение глубины всего на один бит на канал утраивает показатель степени и умножает число цветов в раз. Поэтому переход от 8 к 10 битам на канал (формат для профессиональных дисплеев) поднимает палитру с 16,7 миллиона до более чем миллиарда оттенков. График «цветов от глубины» в калькуляторе показывает этот рост: ось намеренно логарифмическая, иначе 24-битный столбик раздавил бы все остальные.
Как пиксель превращается в HEX-код
В вёрстке и графических редакторах цвет обычно записывают шестнадцатеричным кодом вида #RRGGBB. Это та же тройка каналов, только каждое значение переведено из десятичной системы в шестнадцатеричную и записано двумя цифрами. Один канал в диапазоне занимает ровно две шестнадцатеричные цифры, потому что , а две цифры дают комбинаций - столько же, сколько .
Перевод одного канала идёт в два шага. Сначала делим значение на - частное даёт старшую цифру, остаток младшую:
Здесь кодируется буквой C, поэтому канал со значением превращается в C8. Собрав три канала подряд, получаем полный код цвета. Например, пиксель даёт код #40A0DC, а калькулятор выше пересчитывает HEX мгновенно при любом положении ползунков. Обратный перевод так же прост: каждую пару цифр читают как одно число, и #3FA0DC раскладывается в каналы .
Чем RGB отличается от CMYK
RGB - аддитивная модель: цвета складываются из света, и сумма всех каналов даёт белый. Так работают экраны, которые сами излучают свет. Печать устроена наоборот: краска не излучает, а поглощает свет, поэтому для бумаги используют субтрактивную модель CMYK (голубой, пурпурный, жёлтый, чёрный), где сумма красок стремится к чёрному. Из-за этого один и тот же файл на экране и в печати выглядит немного по-разному, а часть ярких экранных цветов в принципе невозможно воспроизвести краской. Но при кодировании растрового изображения в памяти и при выводе на монитор работает именно RGB, поэтому для информатики это базовая модель.
Частые ошибки
- Путают число значений канала и максимум. Канал принимает значений, но крайнее из них равно . При 8 битах это значений и максимум , а не .
- Считают число цветов как вместо . Каналы комбинируются независимо, поэтому возможности перемножаются, а не складываются. Сложение дало бы всего цветов вместо миллиона.
- Забывают умножить на три при подсчёте веса пикселя. Глубина задана на один канал, а пиксель хранит три канала: на пиксель уходит бит, а не .
- Смешивают биты и байты. 24 бита на пиксель - это байта. При оценке размера файла в байтах не забудьте разделить итог в битах на .
- Записывают HEX одной цифрой на канал. Каждый канал в формате #RRGGBB занимает ровно две шестнадцатеричные цифры, даже если значение маленькое: записывается как 05, а не как 5.
FAQ
Сколько бит занимает один пиксель в RGB? При стандартной глубине 8 бит на канал пиксель занимает бита, то есть 3 байта. Если добавить альфа-канал прозрачности (RGBA), пиксель занимает 32 бита.
Почему именно 16,7 миллиона цветов? Потому что при 8 битах на канал число цветов равно . Каждый из трёх каналов даёт 256 значений, и они комбинируются независимо: .
Как перевести RGB в HEX вручную? Переведите каждый канал из десятичной системы в шестнадцатеричную, дополнив до двух цифр, и запишите их подряд после знака решётки. Например, даёт #40A0DC.
Коротко
Пиксель в цветовой модели RGB кодируется тремя числами - яркостями каналов Red, Green и Blue. При глубине бит на канал каждый канал принимает значений, пиксель занимает бит, а число различимых цветов равно . Для стандартных 8 бит это 24 бита на пиксель и цветов. Тот же цвет записывают HEX-кодом #RRGGBB, переводя каждый канал в две шестнадцатеричные цифры. Калькулятор выше собирает всю эту цепочку - от значений каналов до HEX и числа цветов - за один проход.
Читайте также

Глубина цвета: кодирование графической информации
Что такое глубина цвета в кодировании графики: формула числа оттенков, расчёт объёма файла, стандарты 8/16/24/32/48 бит и типичные ошибки в задачах по информатике.

230 пространственных групп симметрии: откуда берётся число
230 пространственных групп симметрии в кристаллографии: как из 32 точечных групп, 14 решёток Браве и трансляций получается ровно 230 групп Фёдорова, и зачем это нужно.

Декогеренция квантовой системы: как теряется суперпозиция
Декогеренция квантовой системы простыми словами: почему суперпозиция разрушается при взаимодействии со средой, как считать время декогеренции и чем она отличается от коллапса волновой функции.