Сравнение

SVG или PNG: вектор против растра — какой формат выбрать

Дизайнер прислал логотип, а заказчик спрашивает: «А PNG будет?» Разработчик грузит иконку в SVG, а маркетолог жалуется, что та «битая» в письме. Один формат описывает картинку формулами, другой — пикселями, и от этой разницы зависит всё: чёткость на ретине, вес страницы и то, можно ли вообще увеличить картинку без мыла. Разбираемся, кто из них что умеет и как не ошибиться с выбором.

Яркий цветовой градиент — наглядное столкновение вектора и растра
Вектор и растр — два разных способа хранить одну и ту же картинку. Фото: Pexels

Короткий ответ для нетерпеливых

Если у вас логотип, иконка, схема или плоская иллюстрация — берите SVG. Один файл будет одинаково чётким и в шапке сайта, и на билборде, и при этом весить считанные килобайты. Если у вас фотография, скриншот или сложная картинка с тонкими переходами цвета — берите PNG (а для самих фото нередко выгоднее JPG или WebP). SVG тут просто не справится.

Дальше — почему это так, и где проходят границы, чтобы вы могли решать сами, а не запоминать правила наизусть.

Расшифровка названий

SVG — Scalable Vector Graphics, «масштабируемая векторная графика». PNG — Portable Network Graphics, «переносимая сетевая графика». Уже в названии SVG зашита его суперсила — масштабируемость.

Вектор против растра: в чём суть

Вся разница сводится к одному вопросу: что именно лежит внутри файла.

PNG — это растр. Картинка хранится как сетка из пикселей: миллионы крошечных цветных квадратиков, каждый со своим цветом. Это как мозаика — вблизи видны отдельные плитки, издалека складывается изображение. Размер сетки задан жёстко: PNG 512×512 — это ровно 262 144 пикселя, ни больше ни меньше.

SVG — это вектор. Внутри нет ни одного пикселя. Вместо них — текстовое описание фигур на языке XML: «нарисуй круг в точке (100, 100) радиусом 50 и залей цветом #3B82F6», «проведи кривую отсюда сюда». Браузер читает эти инструкции и каждый раз рисует картинку заново под текущий размер экрана.

PNG говорит браузеру «вот готовая картинка из пикселей». SVG говорит «вот рецепт — нарисуй её сам, как нужно».

Из этой развилки растут все остальные различия. Растр гениально передаёт сложные изображения с миллионами оттенков — но привязан к своему разрешению. Вектор невесом и бесконечно масштабируем — но пасует там, где нужно описать живую фотографию.

Плоские геометрические фигуры из бумаги — типичный кандидат на формат SVG
Чёткие плоские формы и сплошные цвета — родная стихия SVG: пара строк кода вместо тяжёлого растра. Фото: Pexels

Масштабирование и ретина: главное отличие

Это тот пункт, ради которого многие и выбирают SVG. Растяните PNG-иконку 32×32 до баннера — и получите «лесенку» по краям и мыло: браузеру нечем заполнить новые пиксели, поэтому он растягивает и размазывает имеющиеся. Уменьшите слишком сильно — детали смажутся в кашу.

SVG масштабируется без потери качества вообще. Хоть до иконки фавиконки, хоть до фасада здания — формулы пересчитываются, и края остаются идеально острыми. Один и тот же файл одинаково хорош на любом размере.

Прощай, @2x

На Retina и других экранах высокой плотности растровую графику приходится готовить в нескольких версиях — обычный размер и удвоенный (@2x), а то и @3x, иначе картинка мылит. SVG ретина-готов «из коробки»: он всегда рисуется под физическое разрешение экрана. Один файл вместо трёх — и никаких размытых иконок на новых дисплеях.

Блочные геометрические формы — иллюстрация фиксированного пиксельного разрешения растра
У растра разрешение зафиксировано: растянешь сверх него — и проступит «блочность». У вектора такой проблемы нет. Фото: Pexels

Размер файла: когда SVG крошечный, а когда нужен PNG

Здесь у многих ломается интуиция, поэтому запомните простое правило: вес SVG зависит от сложности рисунка, а вес PNG — от размера в пикселях.

Простая иконка или логотип из нескольких фигур в SVG — это буквально пара строк текста, часто меньше 5 КБ. Тот же логотип в PNG, заготовленный под крупный экран в 1024 пикселя, легко потянет на сотни килобайт. Для плоской графики SVG почти всегда выигрывает в разы.

Но как только в SVG появляется множество узлов, фильтров, теней и градиентов, его текстовое описание разбухает — и сложная иллюстрация в SVG может оказаться тяжелее PNG. А фотография в виде вектора (если её вообще удастся туда впихнуть) будет просто гигантской. Вот ориентир:

<5 КБтипичная иконка в SVG
1 файлSVG на все размеры экрана
16 млнцветов поддерживает PNG-24

Фотографии: почему здесь только PNG

Самый частый вопрос новичков: «Раз SVG такой лёгкий и чёткий, давайте всё переведём в него?» Не выйдет — и вот почему.

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

PNG же с миллионами оттенков справляется штатно: PNG-24 несёт около 16 миллионов цветов плюс альфа-канал прозрачности, и делает это без потерь — пиксели не огрубляются при сохранении. Правда, за это приходится платить весом: для чистых фотографий WebP или JPG обычно дают тот же вид при куда меньшем размере. PNG же незаменим там, где важна точность и прозрачность одновременно: скриншоты интерфейсов, картинки с резким текстом, графика поверх любого фона.

Прозрачность есть у обоих — но разная

И SVG, и PNG умеют прозрачность, в том числе плавную (полупрозрачные пиксели, мягкие края). Поэтому выбор между ними решает не наличие прозрачности, а природа картинки: фигуры это или фотопиксели.

Анимация, стилизация и чёткость текста

Есть зона, где SVG не просто удобнее, а делает то, чего PNG не умеет в принципе.

  • Анимация и интерактив. SVG — это код прямо в HTML-странице, поэтому его можно анимировать через CSS или JavaScript: плавно менять цвет при наведении, рисовать линию «на лету», вращать элементы. PNG статичен (движущийся вариант — это уже отдельный формат APNG).
  • Стилизация на лету. Цвет SVG-иконки можно поменять одной строчкой CSS — например, перекрасить под тёмную тему. PNG для этого пришлось бы перерисовывать и пересохранять.
  • Идеально резкий текст и линии. Логотип с тонкими буквами в SVG останется острым при любом увеличении. В PNG тот же текст на мелком размере неизбежно «замылится».

Именно поэтому интерфейсные иконки, логотипы и инфографику на современных сайтах почти всегда верстают в SVG.

Что выбрать под задачу

Сведём всё в одну таблицу — это самый быстрый способ принять решение.

КритерийSVG (вектор)PNG (растр)
ТипФигуры, описанные формуламиСетка пикселей
МасштабированиеБесконечное, без потерьРазмывается при увеличении
Готовность к ретинеИз коробки, без @2xНужны версии @2x/@3x
Логотипы и иконкиИдеально, крошечный весТяжелее и не масштабируется
Фото и скриншотыНе подходитРодная стихия
ПрозрачностьДаДа (альфа-канал)
Анимация и CSS-стилизацияДаНет (только APNG)
Редактируется кодомДа, это текстНет, только в редакторе
Поддержка вездеИногда не принимаютОткрывает всё

Практический вывод простой: не выбирайте «один формат на всё». На грамотном сайте логотип и иконки — в SVG, скриншоты и графика с прозрачностью — в PNG, а фотографии — в JPG или WebP. Каждая картинка в своём формате — это и максимальное качество, и минимальный вес страницы.

Плоские векторные иллюстрации с чёткими контурами — характерный пример графики для SVG
Плоские иллюстрации с резкими контурами и сплошными заливками — ровно тот случай, где SVG раскрывается на полную. Фото: Pexels

Как конвертировать туда и обратно

Форматы не враги — их легко переводить один в другой, главное понимать, что при этом происходит.

SVG → PNG (растеризация). Простое и точное преобразование: вектор «отрисовывается» в пиксельную сетку нужного размера. Так делают, когда площадка не принимает SVG — соцсети, маркетплейсы, почтовые рассылки, презентации. Выбираете нужный размер (или DPI) — и получаете чёткий PNG.

PNG → SVG (трассировка). Здесь сложнее: программа обводит контуры растра кривыми и пытается «угадать» фигуры. Для простой плоской графики — одноцветного логотипа, силуэта — это работает прилично. Для фотографии или сложного рисунка результат будет приблизительным и обычно хуже исходника. Трассировка — приём для восстановления простой графики, а не волшебная кнопка «сделать любую картинку векторной».

1

Определите природу картинки

Фигуры и сплошные цвета — путь в SVG. Фотопиксели — в PNG.

2

Загрузите файл в конвертер

Перетащите его в браузер — ставить ничего не нужно.

3

Заберите результат

SVG → PNG в любом размере, или попробуйте трассировку PNG → SVG для простой графики.

Переведите SVG в PNG за пару секунд

Бесплатный конвертер FormatZ растеризует вектор в чёткий PNG нужного размера — прямо в браузере, без установки и регистрации. Нужно наоборот? Это тоже на месте.

Конвертировать SVG в PNG

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

SVG и PNG — не соперники, а напарники: вектор для фигур, растр для фотопикселей. Сила в том, чтобы давать каждой картинке свой формат.
Исходник логотипа всегда держите в SVG: один файл одинаково чёткий и на визитке, и на билборде, и на иконке сайта, а весит он обычно несколько килобайт. PNG понадобится только там, где SVG не принимают: загрузка аватара, превью в соцсетях, вставка в письмо или презентацию. Тогда экспортируйте PNG из SVG в нужном размере через конвертер SVG → PNG.
PNG — это сетка пикселей фиксированного размера. Когда вы растягиваете её, браузеру нечем заполнить новые пиксели, и он размазывает соседние — появляется «лесенка» и муть. SVG хранит не пиксели, а математику фигур (линии, кривые, заливки), поэтому изображение перерисовывается заново под любой размер и остаётся идеально чётким.
На фото миллионы пикселей с чуть разным оттенком — описать каждый отдельной фигурой невозможно. SVG-файл получился бы огромным и тормозил бы браузер, а результат всё равно был бы хуже оригинала. Фото — это растр по своей природе, поэтому его место в PNG, JPG или WebP.
Только трассировкой — программа обводит контуры растра кривыми. Для простой плоской графики (логотип, одноцветная иконка) это работает прилично; для фотографии или сложного рисунка результат будет приблизительным и часто хуже исходника. Обратно, SVG в PNG, конвертируется идеально: вектор растеризуется в любом нужном размере. См. конвертер PNG → SVG.
Используйте оба формата по назначению: SVG для логотипа, иконок, схем и плоских иллюстраций (он крошечный и чёткий на любом экране), PNG — для скриншотов и картинок с прозрачностью, фото — лучше в JPG или WebP. Такой смешанный подход даёт и максимальное качество, и минимальный вес страницы.