- Сравнивать растровые и векторные изображения, узнавать их форматы и редакторы
- Находить глубину цвета по палитре (N = 2ⁱ) и объём изображения по формуле V = W · H · i
- Находить, во сколько раз меняется объём при изменении размеров и палитры, и по объёму определять палитру или размер
- Объяснять цветовые модели RGB и CMYK
Если сильно увеличить фотографию на телефоне, она распадается на маленькие цветные квадратики. А логотип сайта, как его ни увеличивай, остаётся с гладкими краями. Дело в том, что фотография — растровое изображение, а логотип обычно векторное: первое состоит из точек, второе — из формул. В этом уроке разберём, как кодируются оба вида и как вычислять объём растрового изображения.
Этот урок продолжает урок «Кодирование текстовой информации»: там каждый символ заменялся кодом, а здесь — каждый пиксель. Тема часто встречается на вступительном экзамене: в четырёх вступительных экзаменах 2025–2026 годов было 4 задания на кодирование графики (изменение палитры, соответствие объёмов и палитр, High Color и True Color, изображение с изменёнными шириной, высотой и палитрой), а ещё в одном нужно было найти объём рисунка в документе.
Растровая и векторная графика
Прямоугольная сетка (растр) из маленьких квадратных точек — пикселей. У каждого пикселя свой цвет, и компьютер хранит код цвета каждого пикселя отдельно. Фотографии, отсканированные документы и снимки экрана — растровые изображения.
Изображение из простых геометрических объектов — отрезков, прямоугольников, эллипсов, многоугольников, кривых. Компьютер хранит не точки, а описание объектов: координаты, размеры, толщину линии, цвет. Логотипы, схемы, чертежи и шрифты — векторные изображения.
| Растровая графика | Векторная графика | |
|---|---|---|
| Из чего состоит | пиксели | геометрические объекты (примитивы) |
| При увеличении | появляется «лесенка», качество теряется | качество не теряется |
| Объём файла зависит от | числа пикселей и глубины цвета | числа и сложности объектов |
| Подходит для | фотографий, реалистичных изображений | логотипов, схем, чертежей, шрифтов |
| Форматы | BMP, JPEG, PNG, GIF, TIFF | SVG, AI, CDR, EPS |
| Графические редакторы | Paint, Adobe Photoshop, GIMP | CorelDRAW, Adobe Illustrator, Inkscape |
<svg width="240" height="120">
<circle cx="60" cy="60" r="50" fill="red"/>
<rect x="140" y="20" width="80" height="80" fill="royalblue"/>
</svg>r="50" и запусти код снова: круг увеличится без потери качества.Пиксель, разрешение, глубина цвета и палитра
Сколько пикселей у изображения (или экрана) по ширине и по высоте: W × H. Например, у экрана 1920 × 1080 (Full HD) 1920 · 1080 = 2 073 600 пикселей. Для принтеров и сканеров разрешение указывают числом точек на дюйм (dpi).
Число бит i, которым кодируется цвет одного пикселя. Палитра — набор цветов (оттенков), которые может использовать изображение; число цветов в палитре N = 2ⁱ.
- Nчисло цветов (оттенков) в палитре
- iглубина цвета — число бит в коде одного пикселя
Если палитра не степень двойки, i округляют вверх: для 100 цветов нужно 7 бит (2⁷ = 128). В заданиях DİM это звучит так: «каждый цвет кодируется минимально возможным числом бит».
| Режим | Глубина цвета i | Палитра N = 2ⁱ |
|---|---|---|
| чёрно-белый | 1 бит | 2 |
| 16 цветов | 4 бита | 16 |
| 256 цветов | 8 бит | 256 |
| High Color | 16 бит | 65 536 |
| True Color | 24 бита (по 8 бит на R, G, B) | 16 777 216 |
1) В палитре 512 цветов. Какова глубина цвета?
2) В изображении 100 цветов, и каждый цвет кодируется минимально возможным числом бит. Сколько бит занимает один пиксель?
3) Глубина цвета — 12 бит. Какое наибольшее число цветов может быть в палитре?
4) Сколько цветов в режиме High Color?
Показать решениеСкрыть решение
2) 2⁶ = 64 < 100 ≤ 128 = 2⁷ ⇒ 7 бит.
3) N = 2¹² = 4096 цветов.
4) i = 16 ⇒ N = 2¹⁶ = 65 536 цветов.
Объём растрового изображения: V = W · H · i
В растровом изображении цвет каждого пикселя записывается i битами. Пикселей W · H, поэтому объём изображения — это сумма кодов всех пикселей. Это «графический вариант» формулы I = K · i: вместо символов — пиксели.
- Vинформационный объём растрового изображения (бит)
- Wчисло пикселей по ширине
- Hчисло пикселей по высоте
- iглубина цвета (бит), N = 2ⁱ
Сначала найди i по палитре, затем перемножь и переведи биты в нужные единицы: 2¹³ бит = 1 Кбайт, 2²³ бит = 1 Мбайт.
1) Найдите объём в Кбайтах изображения 1024 × 768 с палитрой из 256 цветов.
2) Сколько Кбайт занимает изображение 640 × 480 с 16 цветами?
3) Сколько байт занимает один кадр на экране Full HD (1920 × 1080) в режиме True Color?
Показать решениеСкрыть решение
2) i = 4 бита. V = 640 · 480 · 4 = 1 228 800 бит = 153 600 байт = 153 600 : 1024 = 150 Кбайт.
3) i = 24 бита = 3 байта. V = 1920 · 1080 · 3 = 6 220 800 байт ≈ 5,93 Мбайт.
1) Изображение 512 × 256 занимает 96 Кбайт. Какое наибольшее число цветов в его палитре?
2) Изображение с 16 цветами занимает 256 Кбайт, его ширина — 1024 пикселя. Какова его высота в пикселях?
Показать решениеСкрыть решение
i = 96 · 2¹³ : 2¹⁷ = 96 : 16 = 6 бит ⇒ N = 2⁶ = 64 цвета.
2) i = 4 бита; V = 256 · 2¹³ = 2²¹ бит.
H = V : (W · i) = 2²¹ : (2¹⁰ · 2²) = 2⁹ = 512 пикселей.
Установите соответствие (x — глубина цвета).
Объём изображения:
1. 1024 × 512 × x бит = 640 Кбайт
2. 256 × 256 × x бит = 3 · 2¹⁷ бит
3. 512 × 128 × x бит = 112 Кбайт
Наибольшее число цветов в палитре:
a. 2¹⁰
b. 2⁶
c. 2¹⁴
d. 10
e. 64
Показать решениеСкрыть решение
2. x = 3 · 2¹⁷ : 2¹⁶ = 6 бит ⇒ N = 2⁶ = 64 ⇒ b, e.
3. x = 112 · 2¹³ : 2¹⁶ = 112 : 8 = 14 бит ⇒ N = 2¹⁴ ⇒ c.
d (10) — это глубина цвета, а не число цветов, то есть ловушка.
Ответ: 1 – a; 2 – b, e; 3 – c.
В 24-страничном документе на каждой из первых 8 страниц только изображение 256 × 256, закодированное палитрой из 16 цветов, а на каждой из остальных страниц — текст в UNICODE из 40 строк по 64 символа. Каков информационный объём документа в Кбайтах?
A) 296 B) 256 C) 336 D) 1104 E) 80
Показать решениеСкрыть решение
Текст: 24 − 8 = 16 страниц; 16 · 40 · 64 · 2 байт = 81 920 байт = 80 Кбайт.
Всего: 256 + 80 = 336 Кбайт (C).
Ловушки: A — считать текст в ASCII (40 Кбайт), B — забыть текст, D — принять 16 цветов за 16 бит, E — забыть изображения.
import math
def image_kb(w, h, colors):
i = math.ceil(math.log2(colors)) # color depth, bits
return w * h * i / 2**13 # bits -> KB
print(image_kb(1024, 768, 256))
print(image_kb(640, 480, 16))
print(image_kb(512, 256, 64))▸ Ожидаемый результат
768.0 150.0 96.0
math.ceil — округление вверх) и возвращает объём в Кбайтах. Подставь свои числа и проверь ответы.Задачи на отношение: во сколько раз меняется объём?
Во многих задачах дано не само изображение, а его изменение: палитру уменьшают, ширина и высота меняются. Тогда полный объём считать не нужно — достаточно найти отношение, ведь объём прямо пропорционален ширине, высоте и глубине цвета.
- W₂ / W₁, H₂ / H₁W₂ / W₁, H₂ / H₁во сколько раз изменились ширина и высота
- i₂ / i₁i₂ / i₁отношение глубин цвета — не палитр!
Когда палитра уменьшается в 2ᵏ раз, глубина цвета уменьшается на k бит, а объём — не в 2ᵏ раз, а в i₁ / (i₁ − k) раз.
1) В палитре изображения 65 536 цветов. Число цветов уменьшили в 256 раз. Во сколько раз уменьшится объём изображения? (Каждый цвет кодируется минимально возможным числом бит.)
A) 256 B) 2 C) 8 D) 16 E) 128
2) Чёрно-белое (2 цвета) изображение перевели в палитру из 256 цветов. Во сколько раз увеличится объём?
Показать решениеСкрыть решение
Число пикселей не меняется: V₁ / V₂ = 16 / 8 = 2 (B). 256 (A) — отношение палитр, а не объёмов.
2) i₁ = 1 бит, i₂ = 8 бит ⇒ объём увеличится в 8 раз.
Растровое изображение с палитрой из 256 цветов занимает 96 Кбайт. Другое изображение в 2 раза шире, в 8 раз ниже и закодировано палитрой из 65 536 цветов. Найдите его объём в Кбайтах.
Показать решениеСкрыть решение
V₂ / V₁ = 2 · (1/8) · (16/8) = 2 · 1/8 · 2 = 1/2.
V₂ = 96 : 2 = 48 Кбайт.
Проверка через пиксели: V₁ = A · 8 бит = 96 · 2¹³ бит ⇒ A = 96 · 2¹⁰ пикселей; в новом изображении A · 2 : 8 = 24 · 2¹⁰ пикселей, V₂ = 24 · 2¹⁰ · 16 бит = 48 · 2¹³ бит = 48 Кбайт.
Два изображения — с палитрой из 256 цветов и в системе True Color — имеют одинаковое число пикселей и вместе занимают 96 Мбайт. Найдите объём изображения с 256 цветами в Мбайтах.
A) 12 B) 24 C) 48 D) 72 E) 32
Показать решениеСкрыть решение
a · 8 + a · 24 = a · 32 бит = 96 · 2²³ бит ⇒ a = 3 · 2²³.
V₁ = 3 · 2²³ · 8 бит = 24 · 2²³ бит = 24 Мбайт (B); изображение True Color — 72 Мбайт.
Короче: объёмы пропорциональны битам, 8 : 24 = 1 : 3, значит, 96 Мбайт делятся на 1 + 3 = 4 части: 96 : 4 = 24.
Цветовые модели: RGB и CMYK
Экран создаёт цвета светом: каждый пиксель состоит из трёх крошечных источников света — красного (Red), зелёного (Green) и синего (Blue). Это модель RGB. При сложении цвета становятся ярче (аддитивная модель): все три на полную мощность дают белый, все выключенные — чёрный. В режиме True Color каждая составляющая записывается 8 битами (0–255), поэтому пиксель — это 3 · 8 = 24 бита.
Принтер же наносит краску на белую бумагу, а краска поглощает часть света. Поэтому в печати используют модель CMYK: голубой (Cyan), пурпурный (Magenta), жёлтый (Yellow) и чёрный (Key). При смешивании красок цвет темнеет (субтрактивная модель). Чёрную краску добавляют отдельно: смесь трёх цветных красок не даёт чистого чёрного, к тому же так экономится краска при печати текста.
1) Какой цвет задаёт (0, 255, 0) в RGB?
2) Какой цвет задаёт (255, 255, 0)?
3) Какой цвет получится, если красная, зелёная и синяя составляющие равны 128?
4) Запишите код белого цвета в RGB. Как получается белый цвет в CMYK?
Показать решениеСкрыть решение
2) Красный + зелёный свет ⇒ жёлтый; в шестнадцатеричной записи #FFFF00.
3) Если три составляющие равны, получается оттенок между белым и чёрным; 128 — середина ⇒ серый.
4) RGB: (255, 255, 255). В CMYK для белого краска не наносится: (0, 0, 0, 0) — остаётся цвет бумаги.
В следующем уроке, «Кодирование звуковой и видеоинформации», узнаем, как звук и видео превращаются в цифровой код; видео — это, по сути, последовательность растровых изображений.
Главное
- Растровое изображение состоит из пикселей, векторное — из описаний геометрических объектов; векторное изображение при увеличении не теряет качества.
- Палитра N = 2ⁱ, где i — глубина цвета; i округляют вверх (100 цветов → 7 бит).
- Объём растрового изображения V = W · H · i; чтобы получить Кбайты, дели биты на 2¹³.
- High Color — 16 бит, True Color — 24 бита (по 8 бит на R, G, B).
- В задачах на отношение бери отношение бит, а не палитр: 65 536 → 256 цветов = 16 → 8 бит, объём уменьшается в 2 раза.
- Экран использует модель RGB (аддитивную), принтер — CMYK (субтрактивную).
Проверь себя
Вопросов: 12. Каждый правильный ответ приносит XP.