Найти в Дзене
Хабр Карьера

Форматы изображений в вебе 2024

Оглавление

Статья на Хабре.

Сегодня трудно найти веб сайт, на котором нету хотя бы одного изображения, может быть у вас есть такой пример? На странице в интернете можно сразу увидеть много разных изображений: фото пользователя в личном кабинете, фото товара на маркетплейсе, иконка на вкладке браузера, иконка корзины на кнопке «добавить в корзину», анимированное изображение‑открытка от бабушки в мессенджере, [и еще тысяча примеров].

Если вы как‑то связаны с вебом то вам будет полезно иметь общее представление об этих images, как минимум, и уметь с ними работать как максимум. Давайте попробуем разобраться с этим вопросом?

Форматы изображений

Первое что нужно знать про изображения — они могу иметь разные форматы. К сожалению или к счастью мы живем в мире где существует много форматов изображений и каждый нужен для определенной цели. Вот популярные форматы в вебе.

Попугай.jpg
Попугай.jpg

JPEG

Filename extension: jpg jpeg jpe jif jfif jfi

MIME type: image/jpeg

JPEG (Joint Photographic Expert Group) или JPG один из самых популярных растровых форматов в мире и друг всех «сложных» изображений. JPEG может отображать 16,8 миллионов цветов при этом оставаясь относительно легким.

Плюсы JPEG:

  1. Эффективное сжатие: JPEG позволяет существенно уменьшить размер файлов изображений, что упрощает хранение и передачу файлов в Интернете.
  2. Поддержка миллионов цветов: JPEG поддерживает глубину цвета до 24 бит, что позволяет сохранять изображения с миллионами цветов, идеально подходит для фотографий.
  3. Широкая совместимость: Практически все программы для просмотра изображений и веб‑браузеры поддерживают JPEG, что обеспечивает высокий уровень совместимости и удобство использования.
  4. Регулируемое качество сжатия: Пользователи могут выбирать степень сжатия, чтобы найти оптимальный баланс между качеством изображения и размером файла.

Минусы JPEG:

  1. Потеря качества: Сжатие с потерями означает, что при сохранении изображения в формате JPEG оно теряет часть исходной информации, что может привести к снижению качества, особенно после многократного редактирования и сохранения.
  2. Не подходит для текстов и линейных рисунков: JPEG не лучший выбор для изображений с четкими границами, таких как текст и линейные рисунки, из‑за риска размытия и артефактов сжатия.
  3. Отсутствие поддержки прозрачности: JPEG не поддерживает прозрачные фоны, что делает его неподходящим для определенных типов графического дизайна, где требуется наложение изображений.
  4. Неподходящий для многократного редактирования: Каждое сохранение изображения в формате JPEG ведет к дополнительной потере качества, что делает формат менее подходящим для изображений, которые требуют частых редактирований.
Карта‑Пекина.png
Карта‑Пекина.png

PNG

Filename extension: png

MIME type: image/png

PNG (Portable Network Graphics) — это растровый формат изображения, который предлагает сжатие без потерь. Еще одна особенность PNG формата — изображение может содержать прозрачные области.

Плюсы PNG:

  1. Сжатие без потерь: В отличие от JPEG, PNG использует сжатие без потерь, благодаря чему изображения сохраняют своё первоначальное качество независимо от того, сколько раз они были отредактированы или сохранены.
  2. Поддержка прозрачности: PNG позволяет создавать изображения с прозрачными областями, что идеально подходит для логотипов, иконок и слоёв наложения в веб‑дизайне. Так же можно указать интенсивность прозрачности.
  3. Поддержка большого количества цветов: PNG поддерживает глубину цвета от 8-битной (256 цветов) до 48-битной (десятки миллионов цветов), что делает его подходящим для разнообразных изображений, включая фотографии и графику.
  4. Поддержка сложных изображений: Из‑за своих возможностей PNG хорошо подходит для хранения детализированных карт, текста и иллюстраций с чёткими границами.

Минусы PNG:

  1. Большие размеры файлов: Из‑за сжатия без потерь файлы PNG обычно больше по размеру, чем файлы JPEG, особенно это актуально для больших изображений и фотографий, что может замедлить загрузку веб‑страниц.
  2. Не идеально для фотографий: Для фотографий формат PNG может не быть лучшим выбором из‑за больших размеров файлов по сравнению с JPEG, который хорошо сжимает фотографические изображения.
Прыгающий‑Мячик.apng
Прыгающий‑Мячик.apng

APNG

Filename extension: png apng

MIME type: image/apng

APNG (Animated Portable Network Graphics) — это расширение формата PNG, которое поддерживает анимацию. APNG сохраняет все преимущества PNG, такие как сжатие без потерь и поддержку прозрачности, и добавляет возможность создавать анимированные изображения.

Плюсы APNG:

  1. Поддержка анимации: APNG позволяет создавать анимированные изображения с высоким качеством и поддержкой прозрачности, что делает его идеальным форматом для создания сложных анимаций.
  2. Сжатие без потерь: Как и PNG, APNG использует сжатие без потерь, благодаря чему качество анимации остаётся высоким даже после множественных редактирований.
  3. Поддержка прозрачности: APNG поддерживает прозрачные области в анимациях, что делает его отличным выбором для веб‑дизайна и интерфейсов, где нужно наложение изображений.
  4. Совместимость с PNG: APNG файлы совместимы с существующей инфраструктурой PNG. Неанимированные устройства отображают первый кадр анимации как обычное статическое изображение PNG.

Минусы APNG:

  1. Большие размеры файлов: Из‑за сжатия без потерь, поддержки большого количества цветов, прозрачности и анимации файлы APNG могут быть значительно больше альтернативных форматов, что увеличивает время загрузки и затраты на хранение.
  2. Возможные проблемы с производительностью: Анимации APNG могут потреблять больше ресурсов процессора и памяти при воспроизведении, особенно если они используются в большом количестве на веб‑странице.
Винсент‑Вега.gif
Винсент‑Вега.gif

GIF

Filename extension: gif

MIME type: image/gif

GIF (Graphics Interchange Format) — это широко используемый формат изображений, поддерживающий как статические, так и анимированные изображения. Он особенно популярен для создания простых анимаций и изображений с небольшим количеством цветов.

Плюсы GIF:

  1. Поддержка анимации: GIF позволяет создавать анимированные изображения, что делает его популярным выбором для веб‑анимаций, баннеров и социальных медиа.
  2. Прозрачность: GIF поддерживает одноуровневую прозрачность, позволяя одному цвету в палитре быть полностью прозрачным.
  3. Широкая совместимость: GIF хорошо поддерживается всеми веб‑браузерами и многими программами для просмотра изображений, что обеспечивает высокую универсальность и удобство использования.

Минусы GIF:

  1. Ограниченная цветовая палитра: GIF поддерживает всего до 256 цветов, что может привести к ухудшению качества изображения.
  2. Большие файлы для сложных анимаций: Хотя GIF может быть эффективным для простых изображений и коротких анимаций, размер файлов быстро растет с увеличением сложности и продолжительности анимации.
  3. Потеря качества при сжатии анимированных изображений: В то время как статические GIF‑изображения используют сжатие без потерь, качество анимированных GIF может ухудшаться из‑за ограниченной цветовой палитры.
  4. Неэффективно для детализированных изображений: Из‑за ограничения в 256 цветов, формат GIF не подходит для детализированных изображений или изображений с широким диапазоном цветов.
Канал.jpg (Хабр не поддерживает формат WebP)
Канал.jpg (Хабр не поддерживает формат WebP)

WebP

Filename extension: webp

MIME type: image/webp

WebP — это формат изображений, разработанный Google, который предлагает сжатие изображений с потерями и без потерь. Он призван обеспечить высокое качество изображений при меньших размерах файлов.

Плюсы WebP:

  1. Отличное сжатие с потерями: WebP обеспечивает хорошее сжатие изображений с минимальной потерей качества, что делает его отличным выбором в вебе.
  2. Поддержка анимации: WebP поддерживает анимированные изображения, поэтому он может использоваться для создания веб‑анимаций.
  3. Поддержка прозрачности: WebP поддерживает прозрачность, что идеально подходит для логотипов, иконок и слоёв наложения в веб‑дизайне. Так же можно указать интенсивность прозрачности.
  4. Широкая совместимость: WebP совместим со многими современными браузерами и программами для просмотра изображений, что обеспечивает его удобство использования.

Минусы WebP:

  1. Поддержка старыми браузерами: Хотя WebP получил большую популярность, некоторые старые браузеры (например, Internet Explorer) и программы могут не полностью поддерживать этот формат, что может привести к проблемам с отображением на некоторых устройствах.
Вспаханная‑Долина.jpg (Хабр не поддерживает формат AVIF)
Вспаханная‑Долина.jpg (Хабр не поддерживает формат AVIF)

AVIF

Filename extension: avif

MIME type: image/avif

AVIF (AV1 Image File Format) — это современный формат изображений, основанный на технологии сжатия AV1. Он предназначен для обеспечения высокого качества изображений при более низком размере файлов.

Плюсы AVIF:

  1. Отличное сжатие с потерями: AVIF использует передовые алгоритмы сжатия, что обеспечивает высокое качество изображений при существенном сокращении размеров файлов. Это позволяет ускорить время загрузки веб‑страниц и уменьшить потребление пропускной способности сети.
  2. Поддержка высокого динамического диапазона (HDR): AVIF поддерживает высокий динамический диапазон, что позволяет сохранять изображения с более широким диапазоном яркости и более точной передачей цветов.
  3. Поддержка прозрачности: AVIF поддерживает как сжатие с потерями, так и без потерь, что делает его универсальным форматом для различных типов изображений, включая изображения с прозрачными областями.
  4. Широкая совместимость: AVIF совместим со многими современными браузерами и программами для просмотра изображений, что обеспечивает его удобство использования.

Минусы AVIF:

  1. Поддержка старыми браузерами: AVIF достаточно популярен, однако, некоторые старые браузеры (например, Internet Explorer 👴) и программы могут не полностью поддерживать этот формат, что может привести к проблемам с отображением на некоторых устройствах.
  2. Необходимость в производительных устройствах для декодирования: Так как AVIF использует передовые алгоритмы сжатия, его декодирование может требовать больше ресурсов процессора и памяти, чем другие форматы изображений, особенно на устаревших устройствах.
Иконка‑Сломанного‑Изображения.png (Хабр не поддерживает формат HEIF)
Иконка‑Сломанного‑Изображения.png (Хабр не поддерживает формат HEIF)

HEIF/HEIC

Filename extension: heif heic

MIME type: image/heif image/heic

HEIF (High Efficiency Image Format) — это современный формат изображений, который обеспечивает высокую эффективность сжатия и поддержку различных функций, таких как анимация, HDR, прозрачность и многослойность.

HEIC (High Efficiency Image Container) — это контейнерный формат файла, который используется в том числе и для хранения изображений в формате HEIF, как пример можно привести Live Photos сделанные на iPhone.

Плюсы HEIF:

  1. Высокая эффективность сжатия: HEIF использует передовые алгоритмы сжатия, такие как сжатие с потерями HEVC (High Efficiency Video Coding), что позволяет значительно сократить размеры файлов при сохранении высокого качества изображений.
  2. Поддержка различных функций: HEIF поддерживает не только статические изображения, но и анимацию, HDR, прозрачность и многослойность, что делает его универсальным форматом для различных типов изображений.
  3. Высокое качество изображений: Благодаря использованию передовых технологий сжатия и поддержке различных функций HEIF обеспечивает высокое качество изображений даже при сжатии.

Минусы HEIF:

  1. Ограниченная поддержка: основной минус HEIF это поддержка. Так как этот формат поддерживается только на устройствах Apple, то его использование в вебе становится затруднительным. И все же знать об этом формате может быть полезно учитывая количество пользователей iOS и macOS в мире.
Иконка‑С-Двумя‑Коктейлями.png (Хабр не поддерживает формат SVG)
Иконка‑С-Двумя‑Коктейлями.png (Хабр не поддерживает формат SVG)

SVG

Filename extension: svg

MIME type: image/svg+xml

SVG (Scalable Vector Graphics) — это формат изображений, основанный на XML, который описывает двумерные векторные графики с использованием векторных объектов, таких как линии, кривые, формы и текст.

Плюсы:

  1. Масштабируемость: SVG изображения могут быть масштабированы без потери качества, что делает их идеальным выбором для различных размеров экранов и разрешений, включая высокоуровневые дисплеи.
  2. Малый размер файлов: Поскольку SVG использует векторную графику, файлы обычно меньше по размеру, чем растровые изображения, что приводит к более быстрой загрузке веб‑страниц.
  3. Поддержка текста и шрифтов: SVG позволяет включать текст прямо в изображение, что обеспечивает лучшую читаемость и поддержку различных шрифтов на веб‑страницах.
  4. Возможность взаимодействия и анимации: SVG поддерживает интерактивные элементы и анимацию, что делает его удобным для создания динамических и анимированных изображений.

Минусы:

  1. Сложность: SVG формат имеет множество особенностей в использовании по сравнению с растровыми форматами, поэтому требуется хотя бы базовое понимание того как этот формат работает
  2. Ограничения в применении: по своей природе, если можно так выразиться, SVG формат подходит для «простых» изображений.

Сравнение форматов изображений

Теперь, когда у нас есть базовое понимание о том, какие могу быть форматы и в чем заключаются их плюсы и минусы, давайте попробуем сделать сравнение. Далее я буду брать разные изображения и пытаться сжимать размер файлов стараясь не потерять качество картинки.

Здесь вы сможете найти файлы с изображениями из моего сравнения. Для оптимизации растровых изображений я использовал сервис squoosh, а для анимированной графики — Ezgif

Дисклеймер! Данное сравнение сделано не профессионалами. Пожалуйста, попробуйте его повторить самостоятельно дома. Спасибо!

1. Реалистичное фото JPEG

Далее представлены скриншоты с оптимизацией и конвертацией формата.

1.1 JPEG to PNG

Squoosh. Реалистичное фото — из JPEG в PNG
Squoosh. Реалистичное фото — из JPEG в PNG
  • Качество изображения не изменилось
  • Размер файла увеличился с 1.28MB до 17.2MB (+1249%) 😱

1.2 JPEG to WebP

Squoosh. Реалистичное фото — из JPEG в WebP
Squoosh. Реалистичное фото — из JPEG в WebP
  • Качество изображения почти не изменилось (блики на воде стали более матовыми)
  • Размер файла уменьшился с 1.28MB до 746KB (-42%)

1.3 JPEG to AVIF

Squoosh. Реалистичное фото — из JPEG в AVIF
Squoosh. Реалистичное фото — из JPEG в AVIF
  • Качество изображения почти не изменилось (блики на воде стали более матовыми)
  • Размер файла уменьшился с 1.28MB до 450KB (-65%) 🎉

1.4 Остальные форматы

Все остальные сравнения, как мне кажется, имеют мало смысла:

  • JPEG to SVG. Такой вариант конвертации возможен с технической точки зрения, но не даст никакой оптимизации — грубо говоря, мы получим тоже самое изображение «обернутое» в SVG, но это совсем другая история…
  • JPEG to HEIC. К сожалению, я не смог найти инструментов, которые позволили бы мне конвертировать изображение из формата JPEG в формат HEIC и при этом добиться какой-либо оптимизации. Пожалуйста, расскажите мне как это можно сделать если вы знаете! 🙂
  • JPEG to GIF & JPEG to APNG. По моему скромному мнению форматы GIF и APNG в первую очередь используются для анимированной графики, так что я не буду пытаться конвертировать статичные изображения в этот формат. 🙃

2. Нарисованное изображение PNG

Далее представлены скриншоты с оптимизацией и конвертацией формата.

2.1 PNG to JPEG

Squoosh. Нарисованное изображение — из PNG в JPEG
Squoosh. Нарисованное изображение — из PNG в JPEG
  • Изображение потеряло прозрачность
  • Качество изображения ухудшилось (детали изображения потеряли четкость, появились артифакты сжатия)
  • Размер файла уменьшился с 196KB до 48.2KB (-75%)

2.2 PNG to WebP

Squoosh. Нарисованное изображение — из PNG в WebP
Squoosh. Нарисованное изображение — из PNG в WebP
  • Качество изображения ухудшилось (детали изображения потеряли четкость)
  • Размер файла уменьшился с 196KB до 41.2KB (-79%)

2.2 PNG to AVIF

Squoosh. Нарисованное изображение — из PNG в AVIF
Squoosh. Нарисованное изображение — из PNG в AVIF
  • Качество изображения ухудшилось (детали изображения потеряли четкость)*
  • Размер файла уменьшился с 196KB до 23.1KB (-88%) ❤️

*Если увеличить значение настройки Quality c 0.5 до 0.8, то качество изображение будет практически идентичное оригиналу. При этом размер файла уменьшится с 196KB до 40.0KB (-79%).

2.4 Остальные форматы

Оставшиеся сравнения я пропущу по той же причине, что и в предыдущем примере с реалистичным фото.

3. Анимированное изображение GIF

Далее представлены скриншоты с оптимизацией и конвертацией формата.

3.1 GIF to APNG

Ezgif. Анимированное изображение — из GIF в APNG
Ezgif. Анимированное изображение — из GIF в APNG
  • Качество изображения визуально не изменилось
  • Размер файла увеличился с 1.61MB до 2.04MB (+26.82%)

3.2 GIF to WebP

Ezgif. Анимированное изображение — из GIF в WebP
Ezgif. Анимированное изображение — из GIF в WebP
  • Качество изображения визуально не изменилось
  • Размер файла уменьшился с 1.61MB до 423.84KB (-74.22%) 🙂

3.3 GIF to AVIF

Ezgif. Анимированное изображение — из GIF в AVIF
Ezgif. Анимированное изображение — из GIF в AVIF
  • Качество изображения визуально не изменилось
  • Размер файла уменьшился с 1.61MB до 118.48KB (-92.79%) ❤️

3.4 Остальные форматы

Ну вы поняли. 🙂

Выводы сравнения форматов

На основании моего сравнения можно сделать очевидное заключение — современные форматы (WebP и AVIF) универсальны и при этом имеют очень хорошую оптимизацию.

Таблица сравнений
Таблица сравнений

Можно ли использовать эти форматы в своих приложениях? Нужно!

Браузерная поддержка формата WebP
Браузерная поддержка формата WebP
Браузерная поддержка формата AVIF
Браузерная поддержка формата AVIF

Оптимизация SVG

Векторная графика не может полноценно поучаствовать в сравнении, однако, думаю, что стоит немного рассказать про ее оптимизацию.

Оптимизация и сжатие SVG графики происходит путем удаления избыточной информации и оптимизации структуры файла. Вот несколько методов, которые используются для этого:

  1. Удаление ненужных элементов и атрибутов: Из SVG файла могут быть удалены ненужные элементы, атрибуты и метаданные, такие как комментарии, пробелы и переносы строк, которые не влияют на отображение изображения.
  2. Комбинирование элементов: Несколько похожих элементов могут быть объединены в один для уменьшения количества элементов и улучшения читаемости файла.
  3. Использование сокращений: Длинные значения атрибутов могут быть заменены сокращенными формами или выражениями, что уменьшает размер файла.
  4. Применение сжатия: SVG файлы могут быть сжаты с использованием сжатия данных, такого как gzip, что позволяет дополнительно сократить размер файла при передаче по сети.
  5. Конвертация в растровый формат: SVG изображения можно конвертировать в полноценный растровый формат, например AVIF. В редких случаях это может уменьшить размер файла.

К примеру здесь векторное изображение удалось сжать c 2.21KB до 1.43KB (-35.35%) при помощи инструмента SVGOMG.

SVGOMG. Оптимизация иконки с куском торта и мороженном
SVGOMG. Оптимизация иконки с куском торта и мороженном

Заключение

Используйте разные форматы изображений отталкиваясь от вашей конкретной задачи. Не бойтесь использовать современные форматы — давайте сделаем веб быстрее и красивее! Оптимизируйте и экспериментируйте! 🙂 Пока!

Ссылки на источники

Ссылки на источники, которыми я пользовался при написании этой статьи — советую посмотреть!