Выбор ответа Middle Производительность и тестирование обновлено

Сколько памяти занимает декодированная картинка

Вопрос

JPEG 4000×3000 весит на диске 2 МБ. Сколько примерно памяти займёт его декодированное изображение в формате RGBA?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Около 48 МБ: 4000 × 3000 × 4 байта. Сжатие JPEG действует только на диске.

Варианты ответа

  1. Около 48 МБ: 4000 × 3000 × 4 байтаправильный ответ
  2. Около 2 МБ, как файл
  3. Около 12 МБ: по байту на пиксель
  4. Зависит только от размера UIImageView

Разбор

Сжатие JPEG действует только на диске. Для отрисовки картинка декодируется в битмап: ширина × высота × 4 байта на пиксель (RGBA), то есть 48 МБ. Десяток таких в ленте и приложение убьёт система. Решение: downsampling через ImageIO (CGImageSourceCreateThumbnailAtIndex) до размера, в котором картинка показывается. Размер view на память исходного битмапа не влияет.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.