Теория:

Когда мы смотрим на экран, то видим плавные линии и миллионы цветов. Но для компьютера любая картинка — это просто строгая таблица (сетка) и набор чисел.
В компьютерной графике есть два основных подхода: векторный (формулы и фигуры) и растровый.
Растровое изображение — это как лист бумаги в клеточку. Только клеточки эти очень маленькие, и каждая из них называется Pixel — Picture Element.
Чем больше таких клеточек, тем чётче картинка.
Каждый пиксель хранит в себе информацию о своем цвете в виде числа (кода).
 
Параметры рстрового изображения
 
\(1\). Разрешение (размер изображения)
Это количество пикселей по ширине и высоте. Обозначается обычно как \(W×H\) (Width \(×\) Height).
Пример: разрешение \(1920×1080\) (Full HD) означает, что в ширину у нас \(1920\) пикселей, а в высоту — \(1080\).
Обрати внимание!
Чем больше пикселей, тем больше места нужно для их хранения. Это прямая зависимость.
 
\(2\). Глубина цвета
 
Каждый пиксель — цветной. Вопрос: сколько памяти нужно выделить на один пиксель, чтобы закодировать его цвет?
Количество цветов в палитре (\(N\)) и количество бит на один пиксель (\(i\)) связаны главной формулой кодирования:
 
N=2i, где:
\(N\) — количество цветов в палитре;
\(i\) — глубина цвета (количество бит на один пиксель).
 
Примеры
 
1. Черно-белое изображение (без градаций серого). Нам нужно всего \(2\) цвета: черный и белый.
    \(N = 2\)
    По формуле 2=2i → \(i = 1\) бит.
    Вывод: один пиксель в такой картинке занимает всего \(1\) бит.
 
2. Изображение в стиле старых игр (\(256\) цветов).
   \(N = 256\)
   256=2i → \(i = 8\) бит = \(1\) байт.
   Вывод: один пиксель занимает \(1\) байт.
 
3. True Color (Реалистичное фото). Современные мониторы используют модель RGB (Red, Green, Blue). Каждый из трёх цветов (красный, зеленый, синий) может иметь \(256\) градаций яркости (28 \(=\) \(256\)).
Чтобы закодировать один канал (например, красный), нужно \(8\) бит.
Всего каналов три: \(8\) бит (R) \(+\) \(8\) бит (G) \(+\) \(8\) бит (B) \(=\) \(24\) бита на пиксель.
\(i = 24\) бита.
N=224=16777216 цветов. Это и есть True Color.
 
\(3\). Палитра
 
Иногда, чтобы сэкономить место, мы не храним полную информацию о цвете каждого пикселя (24 бита), а создаем таблицу цветов — палитру. В начале файла сохраняется палитра (список цветов, которые встречаются в картинке, например, 256 штук). А каждый пиксель хранит не сам цвет, а номер цвета из этой палитры (индекс). Это экономит место, если картинка не очень красочная, но для фотографий природы палитра уже не подходит.
 
Теперь, когда мы знаем разрешение и глубину цвета, мы можем легко посчитать, сколько весить наша картинка в памяти компьютера.
 
I=W ·H ·i, где:
\(I\) — информационный объем изображения (в битах);
\(W\) — ширина изображения в пикселях;
\(H\) — высота изображения в пикселях;
\(i\) — глубина цвета (бит на пиксель).
 
Задача
 
Для хранения изображения размером \(128×128\) пикселей выделено \(4\) КБайта памяти. Какое максимальное количество цветов можно использовать в палитре?
 
Решение

1.  Переведём выделенный объём в биты (чтобы было удобно делить на пиксели).
\(4\) КБ \(=\) \(4 * 1024 = 4096\) байт.
\(4096 * 8 = 32768\) бит.
2.  Найдём общее количество пикселей: \(128 * 128 = 16384\) пикселя.
3.  Найдём, сколько бит памяти приходится на один пиксель (глубину цвета \(i\)):
\( i = 32768 / 16384 = 2 \) бита.
4.  По формуле N=2i, находим количество цветов N=22=4.
 
Ответ: можно использовать максимум \(4\) цвета.