Кодирование картинок и звука
Считаем, сколько места занимает картинка или звук, и наоборот, что влезет в заданный объём. Кода здесь нет. Всё решается руками через степени двойки, и большие числа сокращаются почти сами.
- 1Что проверяет номер
- 2Формулы и единицы
- 3Раскладываем на степени двойки
- 4Восемь типов задач
- 5Ловушки перед экзаменом
- 6Домашка
Что проверяет номер
Дан файл, картинка или звук, и его параметры. Вопрос бывает трёх видов:
Сколько Кбайт займёт голосовое сообщение или пакет фотографий.
Сколько цветов можно взять, сколько секунд влезет, сколько картинок поместится.
Во сколько раз изменится размер файла, если поменять параметры записи.
Калькулятор на экзамене не нужен. Числа в условиях подобраны так, что почти всё сокращается, если разложить их на степени двойки.
Формулы и единицы
Формул всего три. Картинка и звук дают результат в битах, а третья связывает биты на пиксель с числом цветов.
| Что считаем | Формула | Что значат буквы |
|---|---|---|
| Картинка | I = x · y · i | x, y это размеры в пикселях, i это бит на пиксель |
| Звук | I = k · ν · i · t | k это каналы (моно 1, стерео 2, квадро 4), ν это частота в Гц, i это глубина в битах, t это время в секундах |
| Цвета | N = 2i | i это наименьшее целое, при котором 2i ≥ N |
Единицы переводим так:
| Единица | Сколько это | В степенях |
|---|---|---|
| 1 байт | 8 бит | 2³ бит |
| 1 Кбайт | 1024 байта | 2¹⁰ байт, 2¹³ бит |
| 1 Мбайт | 1024 Кбайт | 2²⁰ байт, 2²³ бит |
| 1 кГц | 1000 Гц | не степень двойки |
В Кбайте 1024 байта, а в кГц 1000 Гц. Приставка похожа, а множитель разный.
Раскладываем на степени двойки
Вот шпаргалка, которую стоит знать наизусть:
| Степень | Число | Степень | Число |
|---|---|---|---|
| 2³ | 8 | 2⁸ | 256 |
| 2⁴ | 16 | 2⁹ | 512 |
| 2⁵ | 32 | 2¹⁰ | 1024 |
| 2⁶ | 64 | 2¹¹ | 2048 |
| 2⁷ | 128 | 2¹² | 4096 |
Способ всегда один:
- Каждое число записываем как степень двойки и остаток: 24 = 2³ · 3, 60 = 2² · 15.
- Перемножаем степени, складывая показатели: 2¹¹ · 2⁹ = 2²⁰.
- В самом конце переводим единицы. Из бит в байты делим на 2³, из байт в Кбайт на 2¹⁰, из Кбайт в Мбайт ещё на 2¹⁰.
Приём с числом 125
Частота обычно дана в тысячах, а 1000 = 2³ · 125. Поэтому 8000 = 2⁶ · 125, 16 000 = 2⁷ · 125, 32 000 = 2⁸ · 125. Двойки сокращаются с единицами, а 125 остаётся.
Пример из настоящей задачи: стерео, 64 000 Гц, 8 бит, 2 минуты 18 секунд, это 138 секунд. Сколько Кбайт?
I = 2 · 64 000 · 8 · 138 бит. Делим на 8 и получаем байты: 2 · 64 000 · 138 = 128 000 · 138. Теперь делим на 1024: 128 000 / 1024 = 125. Ответ 125 · 138 = 17 250 Кбайт. Столбик понадобился только один раз.
Восемь типов задач
1. Найти размер картинки
Изображение 2048 × 512 пикселей, 16 цветов. Сколько Кбайт?
16 цветов это i = 4, потому что 2⁴ = 16. Получаем I = 2¹¹ · 2⁹ · 2² = 2²² бит = 2¹⁹ байт = 2⁹ Кбайт = 512 Кбайт.
Изображение 1024 × 512 пикселей, 64 цвета. Сколько Кбайт оно занимает?
2. Сколько бит на пиксель
300 цветов: 2⁸ = 256 мало, 2⁹ = 512 хватает, значит i = 9. Округляем только вверх: на 8 битах все 300 цветов не закодировать.
Палитра может быть задана степенью прямо в условии. 16 384 = 2¹⁴, значит 14 бит. 2³⁰ цветов это 30 бит.
3. Наибольшее число цветов под лимит
Картинка 1024 × 1024 должна занимать не более 640 Кбайт. Наибольшее число цветов?
Пикселей 2²⁰, лимит 640 · 2¹³ бит. На один пиксель приходится 640 · 2¹³ / 2²⁰ = 640 / 128 = 5 бит. Цветов 2⁵ = 32.
4. Сколько секунд звука влезет
Моно, 8 кГц, 16 бит, памяти 2 Мбайт. Сколько целых секунд?
Память 2 · 2²³ = 2²⁴ бит. За секунду расходуется 8000 · 16 = 2⁶ · 125 · 2⁴ = 2¹⁰ · 125 бит. Значит, t = 2²⁴ / (2¹⁰ · 125) = 16 384 / 125 = 131,072. Округляем вниз: 131 с, больше не влезет.
Моно, 16 кГц, 16 бит, памяти 1 Мбайт. Сколько целых секунд звука поместится?
5. Время передачи
Файл 3 Мбайт, канал 2¹⁹ бит/с. Сколько секунд?
I = 3 · 2²³ бит, t = 3 · 2²³ / 2¹⁹ = 3 · 2⁴ = 48 с.
6. Как изменился размер
Звук был моно, 16 бит. Стал стерео, 12 бит, а частоту увеличили в 2 раза. Во сколько раз изменился размер?
Берём только множители: каналы × 2, частота × 2, глубина × 12/16 = 3/4. Итого 2 · 2 · 3/4 = 3. Всё, что не менялось, сокращается, поэтому чисел в условии может и не быть.
Звук был записан в стерео с глубиной 8 бит. Его перезаписали в квадро с глубиной 16 бит, а частоту уменьшили в 2 раза. Во сколько раз вырос размер файла?
7. Звук с «некрасивыми» числами
Стерео, 16 кГц, 24 бита, 1 минута. Сколько это?
I = 2 · 16 000 · 24 · 60 = 46 080 000 бит = 5 760 000 байт = 5625 Кбайт ≈ 5,49 Мбайт. Минуту сразу перевели в секунды. Если просят целое число Мбайт, смотри в условие, в какую сторону округлять.
8. Сколько картинок влезет
Одна картинка 640 × 480, 256 цветов: 640 · 480 · 8 бит = 300 Кбайт. В 5 Мбайт, это 5120 Кбайт, влезет 5120 / 300 = 17,07. Округляем вниз: 17 картинок.
Как это выглядит в настоящих задачах
Чаще всего встречается звук. Главное там прочитать, что просят сделать с дробью:
| В условии | Что делаем | Пример |
|---|---|---|
| «наименьшее количество Кбайт, чтобы сохранить» | Вверх, иначе файл не поместится | 7656,25 → 7657 |
| «укажите целую часть» | Вниз, просто отбрасываем дробь | 9,84 → 9 |
| «максимально возможный», лимит | Вниз, иначе лимит превысим | 861,42 → 861 |
Ещё два вида собираются из того же:
Экономия трафика. Считаем размер одного снимка до и после сжатия, берём разность и умножаем на число снимков. Пример: снимок 1024 × 1024, 24 бита, сжимают до 512 × 512, 16 бит, всего 100 снимков. На одном снимке экономия 2²⁰ · 24 − 2¹⁸ · 16 = 2¹⁸ · 80 бит. На всех 2¹⁸ · 8000 бит, это 2¹⁸ · 1000 байт, то есть 250 Мбайт.
Заголовки. В файле есть не только звук, но и заголовок. Считаем данные, вычитаем их из лимита, остаток делим на число заголовков. Пример: 10 треков общей длительностью 20 минут, стерео, 16 000 Гц, 16 бит, лимит 74 Мбайт. Данные: 2 · 16 000 · 16 · 1200 бит = 75 000 Кбайт. Лимит 75 776 Кбайт. Остаётся 776 Кбайт на 10 заголовков, то есть 77,6 на один. Округляем вниз: 77 Кбайт.
Ловушки перед экзаменом
Всё, на чём теряют балл в №7, одним списком.
| Ловушка | Как не попасться |
|---|---|
| Округление не в ту сторону | Бит на пиксель и «чтобы сохранить» вверх. Секунды, картинки, лимит и «целая часть» вниз |
| Округлили посреди счёта | Дроби держим до конца, единицы переводим и округляем в самом конце |
| 1000 и 1024 | кГц это 1000, Кбайт это 1024 |
| Кбит и Кбайт | Формулы дают биты. Не забудь разделить на 8 |
| Забыли каналы | Стерео × 2, квадро × 4 |
| Минуты и часы | Сразу в секунды: 2 минуты 18 секунд это 138 с |
| Сжатие | Если файл сжат на 25%, размер умножаем на 0,75 |
Домашка
Семь задач с настоящих экзаменов. Решай на листочке, через степени двойки, и вписывай ответ.
Перед счётом ответь себе на два вопроса:
- в каких единицах нужен ответ;
- что сказано про округление: вверх, вниз или ответ получится целым.
В пятой задаче считай размер всего пакета и только потом округляй. В шестой размер считать не нужно, хватит множителей. В последней глубину цвета бери из условия: палитру 232 сжимают до другой глубины.
Ещё задачи этого вида лежат в разделе «Задания», №7.
Примеры и задачи «Попробуй сам» учебные, в домашке задачи с настоящих экзаменов.