Компьютер видит картинку не так, как мы. Для него это просто сетка из точек — пикселей.
Для каждого пикселя нужно запомнить только одно: его цвет.
1. Делим на пиксели
Картинка становится таблицей точек.
2. Кодируем цвет
Каждому пикселю записываем код его цвета.
3. Складываем всё вместе
Коды пикселей идут один за другим.
Сколько пикселей?
Если изображение имеет размер \(X \times Y\), то:
\(K = X \cdot Y\)
\(K\) — количество пикселей.
Сколько бит на пиксель?
\(i\) — глубина цвета: сколько бит нужно для хранения цвета одного пикселя.
\(i = \lceil \log_2 N \rceil\)
Как найти весь объём?
Умножаем количество пикселей на вес одного пикселя.
\(I = K \cdot i\)
\(I\) получаем в битах.
Нужно понять, сколько бит требуется для кодирования одного цвета.
256 цветов
\(2^8 = 256\) Значит, \(i=8\) бит.
4096 цветов
\(2^{12} = 4096\) Значит, \(i=12\) бит.
Например, 200 цветов
\(2^7=128\) — мало. \(2^8=256\) — хватает. Значит, \(i=8\).
Нужно выбрать минимальное целое \(i\), для которого \(2^i \ge N\).
Растровое изображение имеет размер 1024 × 768 пикселей и палитру из 256 цветов.
1. Считаем пиксели
\(K = 1024 \cdot 768 = 786432\)
2. Находим глубину
\(256=2^8\) Значит, \(i=8\).
3. Считаем объём
\(I=786432\cdot8=6291456\) бит.
4. Переводим
\(6291456:8:1024=768\) Кбайт.
Ответ: 768 Кбайт.
Компьютер поддерживает разрешение 2400 × 1600 пикселей. Каждый пиксель может иметь один из 4096 цветов. Найдём объём видеобуфера в Кбайтах.
Пиксели
\(K=2400\cdot1600=3840000\)
Глубина цвета
\(4096=2^{12}\) Значит, \(i=12\).
Объём
\(I=3840000\cdot12=46080000\) бит.
Перевод
\(46080000:8:1024=5625\) Кбайт.
Ответ: 5625.
Программа нужна не потому, что формула сложная. Она помогает не ошибиться в больших числах.
1. Запиши данные
Ширину, высоту и количество цветов сохраняем в переменные.
2. Найди i
Нужно узнать, сколько бит требуется на один пиксель.
3. Запиши формулу
\(I=X\cdot Y\cdot i\).
4. Переведи и выведи
Переводи результат только в те единицы, которые просит задача.
Например:
math.log2(256)
math.log2(200)
math.ceil(...)
Поэтому в начале программы понадобится: import math.
import math
Вывод программы:
8 6291456 768
«Разрешение» бывает разным
Если рядом написано пикселей — это размер изображения. Если рядом написано бит — это глубина цвета.
N цветов — это не N бит
Например, 65536 цветов — это: \(2^{16}=65536\). Значит, нужно 16 бит.
Палитра не степень двойки
1200 цветов не помещаются в 10 бит: \(2^{10}=1024\) — мало. Нужно 11 бит.
Забыли количество кадров
Если изображений несколько, сначала найди объём одного, потом умножь на количество кадров.
Есть прозрачность
Если отдельно кодируются цвет и прозрачность, число бит складывается:
\(i=i_{\text{цвет}}+i_{\text{прозрачность}}\)
1. До счёта
2. Во время счёта
3. Перед ответом
Изображение 640 × 480 пикселей, палитра из 16 цветов. Сколько Кбайт занимает файл? В ответе запишите целое число.
Сколько бит на пиксель нужно для палитры из 1000 цветов?
Изображение 1024 × 1024 пикселя, палитра из 4 цветов. Сколько Кбайт занимает файл? В ответе запишите целое число.
Сопоставьте размер палитры и глубину цвета.
Отметьте верные утверждения про растровое изображение.