Skip to content
Назад в блог

Оптимизация SVG, экспорт кода и сжатие изображений

4 мин. чтения
Оптимизация SVG, экспорт кода и сжатие изображений

Изображения составляют больше половины веса большинства сайтов. Оптимизация картинок — это не украшательство, а скорость загрузки, метрики Core Web Vitals и реальные деньги.

Краткая история сжатия

1980 — CCITT стандартизирует факс-протокол Group 3, использующий производную от кодирования Хаффмана схему (Modified Huffman) для сжатия чёрно-белых изображений. Первый массовый алгоритм сжатия.

1987 — CompuServe выпускает GIF (Graphics Interchange Format). Использует LZW-сжатие без потерь, ограничен 256 цветами.

1992 — Joint Photographic Experts Group публикует JPEG. Первый формат с потерями, который отбрасывает незаметные глазу детали. Революция в фотографии и вебе.

1996 — PNG (Portable Network Graphics) создан как бесплатная замена GIF (патентный спор с Unisys по LZW). Сжатие без потерь, поддержка 16,7 млн цветов и альфа-канала.

2010 — Google выпускает WebP. Основан на технологиях видеокодека VP8. Сжимает на 25–34% лучше JPEG при том же качестве.

2019 — AVIF на основе видеокодека AV1. Ещё на 50% меньше WebP при том же PSNR. Поддержка HDR и 12-битного цвета.

SVG: мусор, который можно просто выкинуть

SVG — особый случай. Это не сжатие пикселей, а разметка. Проблема: инструменты (Figma, Adobe Illustrator, Inkscape) добавляют в SVG массу служебной информации:

  • Метаданные (автор, время создания, версия)
  • Пустые <g> группы
  • Координаты с точностью до 10 знаков («0.0000000001»)
  • Скрытые слои
  • Неиспользуемые определения (<defs>)
  • Комментарии

Библиотека SVGO (Node.js), вышедшая в 2012 году, стала стандартом для автоматической чистки SVG. Она может уменьшить файл Figma на 80–90% без каких-либо видимых изменений.

Что делают два оптимизатора

Оптимизатор SVG очищает, трансформирует и экспортирует векторную графику. Оптимизатор изображений отвечает за ресайз, сжатие и подготовку PNG, JPEG и WebP.

Загрузка и оптимизация SVG

Разметку можно вставить, выбрать .svg-файл, перетащить его в исходную панель или отправить текущий рисунок прямо из Pixel Painter. Для оптимизации используется локальная сборка SVGO и три стартовых пресета:

  • Safe выполняет консервативную очистку.
  • Balanced подходит как основной режим для production-файлов.
  • Maximum включает дополнительные преобразования и несколько проходов оптимизации.

В сворачиваемом разделе Advanced настраиваются удаление метаданных и комментариев, схлопывание групп, размеры (dimensions), преобразование фигур в контуры (path), объединение path, сохранение <title> и <desc>, точность чисел, короткие теги и префикс для ID. viewBox сохраняется. Перед предпросмотром удаляются потенциально опасные теги <script>, обработчики событий (event handlers), встроенные документы и внешние ссылки.

Предпросмотр, форматирование и трансформации

Во вкладке Preview результат можно проверить на шахматном, светлом, тёмном или собственном фоне. Этот фон нужен только для просмотра и не добавляется в файл.

Весь SVG можно повернуть на 90 градусов влево или вправо, отразить по горизонтали или вертикали и сбросить к оптимизированному состоянию. При повороте геометрия и размеры корректно меняются местами. Вкладка SVG показывает минифицированную разметку или отформатированную (prettified) версию с двумя пробелами, четырьмя пробелами либо табами.

Экспорт кода и форматов

Все варианты создаются из одного и того же трансформированного SVG:

  • оптимизированный SVG;
  • React JSX с настраиваемым именем компонента;
  • React Native JSX для react-native-svg с предупреждениями о неподдерживаемых элементах;
  • Vue single-file component;
  • PNG с заданной шириной, прозрачностью или собственным фоном;
  • варианты Data URI (percent-encoded и Base64).

Текстовые форматы можно скопировать или скачать. PNG создаётся в браузере, а временные Blob-URL освобождаются автоматически.

Пакетное сжатие растровых изображений

Режим Image Compressor принимает до десяти PNG, JPEG, WebP и других поддерживаемых браузером изображений через окно выбора файлов или перетаскиванием (drag-and-drop). Для всей очереди задаются общие параметры: сохранить исходный формат каждого файла либо конвертировать всё в JPEG, WebP или PNG, выбрать качество lossy-форматов и фон для преобразования прозрачности в JPEG.

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

Быстрый старт: откройте Оптимизатор SVG → вставьте или перетащите SVG → выберите Balanced → проверьте предпросмотр и уменьшение размера → при необходимости примените трансформацию → скопируйте компонент или скачайте SVG/PNG. Для растровых изображений откройте Оптимизатор изображений, перетащите до десяти файлов, выберите общие настройки и скачайте отдельные результаты или один ZIP-архив.

Похожие инструменты

Частые вопросы

Чем отличается сжатие с потерями от без потерь?

Сжатие без потерь (lossless — PNG, GIF, WebP lossless) сохраняет каждый пиксель исходного изображения. Сжатие с потерями (lossy — JPEG, WebP lossy, AVIF) отбрасывает детали, незаметные человеческому глазу, ради большего уменьшения размера. SVG — текстовый формат, его «сжатие» — это удаление избыточных данных из разметки (служебных метаданных, пустых тегов).

Кто создал WebP?

WebP разработан Google на основе технологии, приобретённой с компанией On2 Technologies в 2010 году. WebP использует те же техники сжатия, что и видеокодек VP8. В Chrome формат появился сразу, но полная поддержка во всех браузерах заняла почти десять лет — Firefox добавил её только в 2019 году, а Safari держался до 2020-го. WebP даёт на 25–34% меньший размер по сравнению с JPEG при том же качестве.

Почему SVG из Figma нужно чистить?

Графические редакторы могут добавлять метаданные, комментарии, длинные координаты, пустые группы, служебные атрибуты и лишние трансформации. Оптимизатор удаляет или упрощает эту разметку согласно пресету Safe, Balanced или Maximum и сохраняет viewBox.

Можно ли преобразовать SVG в React или Vue?

Да. Один и тот же оптимизированный SVG можно скопировать или скачать как SVG, React JSX, компонент React Native для react-native-svg или Vue single-file component. Для неподдерживаемых в React Native элементов выводятся предупреждения.

Можно ли экспортировать PNG и Data URI?

Да. Для PNG задаётся ширина, прозрачность или собственный фон. Вкладка Data URI создаёт percent-encoded и Base64-варианты.

Загружаются ли файлы на сервер?

Нет. Парсинг, санитизация, оптимизация, предпросмотр, генерация кода, растеризация в PNG и сжатие растровых изображений выполняются локально в браузере.

Что лучше — WebP или AVIF?

AVIF (основан на видеокодеке AV1, 2019) даёт лучшее сжатие, чем WebP, но поддержка в браузерах пока неполная (Chrome 85+, Firefox 93+, Safari 16.1+). WebP — более универсальный выбор на сегодня: поддерживается всеми современными браузерами.

Автор

Fullstack Engineer

В коммерческой разработке с 2011 года — больше 15 лет. Автор двух SaaS-продуктов: TeleGo.io и LingvoHabit.com. Статьи здесь выросли из реальной клиентской и продуктовой работы.

Подробнее об автореНаписать в Telegram

Похожие статьи

GZIP VS BROTLI
GZIP VS BROTLI · '26

Как патенты на LZW привели к gzip, а веб к Brotli

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

#GZip vs Brotli #история сжатия данных #Jean-loup Gailly #Brotli Google #Deflate алгоритм #LZ77 Huffman
5 мин. чтения
ФОРМАТИРОВАНИЕ RTL ТЕКСТА
ФОРМАТИРОВАНИЕ RTL ТЕКСТА · '26

Почему иврит и английский меняются местами

Как Unicode BiDi отображает иврит и арабский вместе с латиницей и кириллицей и когда использовать isolates, LRM или RLM.

#Форматирование RTL текста #Иврит и английский #Unicode BiDi controls #LRM и RLM #LRI RLI PDI #Смешанное направление текста
3 мин. чтения
ГЕНЕРАЦИЯ ТЕСТОВЫХ ДАННЫХ
ГЕНЕРАЦИЯ ТЕСТОВЫХ ДАННЫХ · '26

От ручных фикстур до Data Mocker в браузере

Почему реалистичные фикстуры лучше ручного JSON и как локальный Data Mocker создаёт JSON или CSV по схеме с 18 типами полей.

#генерация тестовых данных #Faker.js #mock data #тестовые фикстуры #Data Mocker #schema builder
3 мин. чтения