Превращает растровую PNG-картинку в масштабируемый векторный SVG.
Загружай этот скилл когда нужно перевести растровое изображение в вектор: для логотипов, иконок, схем, README-ассетов или любого PNG, который должен масштабироваться без потери качества.
Use this skill when:
Do NOT use when:
SKILL.md — этот файлscripts/raster_to_svg.py — конвертер PNG → SVG (Python 3 stdlib, без pip)scripts/raster_to_svg_server.py — локальный веб-сервер с UI (стандартный http.server)scripts/svg_export.py — конвертеры SVG → DXF R12 / EPS (слои по цвету заливки)scripts/raster_to_svg_mcp.py — опциональный MCP-сервер для AI-агентовexamples/web/ — фронтенд (index.html + style.css + app.js): drag & drop (PNG/JPG/WEBP с локальной перекодировкой), sticky-превью с лупой ×4 на результате, 12 быстрых пресетов (плоский стиль, минимал, лайн-арт, иконка, логотип, фото-плоский, фото, дуотон, винтаж, чб, мозаика-постер, мозаика-круги) с меткой «ручные настройки» при ручном изменении, скрытие неактуальных групп настроек движка (vtracer/native/мозаика), подготовка фото (сглаживание + ступени цвета в браузере), прогресс-бар, код SVG, скачивание# Базово: PNG → SVG с белым фоном:
python3 skills/raster-to-svg/scripts/raster_to_svg.py -i logo.png -o logo.svg --bg white
# Меньше цветов (нативный contour):
python3 raster_to_svg.py -i logo.png -o logo.svg --colors 4
# Мозаичный постер из примитивов:
python3 raster_to_svg.py -i icon.png -o icon.svg -m mosaic --cell 8 --shape auto
# Пайплайн stdin → stdout:
cat icon.png | python3 raster_to_svg.py -i - -o -
# Машиночитаемый отчёт:
python3 raster_to_svg.py -i logo.png -o logo.svg --json
# Принудительно нативный движок (без vtracer):
python3 raster_to_svg.py -i logo.png -o logo.svg --engine native
Запуск локального веб-сервера с UI (drag & drop, превью, код, скачивание, копирование):
python3 skills/raster-to-svg/scripts/raster_to_svg_server.py
# → http://127.0.0.1:8642/ (откроется в браузере автоматически)
Опции: --port N, --host, --no-browser, --max-mb N (лимит входного файла, по умолчанию 20 МБ).
GET / — UI, GET /health — статус, GET /defaults — схема параметров (single source of truth), POST /convert?<параметры> с телом = raw PNG → {"svg", "report"}, POST /export (JSON {"svg","fmt","layers"}) → DXF/EPS, POST /zip (JSON {"files":[{"name","svg"}]}) → .zip для пакетной обработки.400 неверный параметр, 413 превышен лимит, 415 не-PNG, 500 сбой движка.| Движок | Как включить | Когда выбирать |
|---|---|---|
vtracer (бинарь vtracer из пакета vtracer-cli) |
--engine vtracer (cargo install vtracer-cli) |
качественная цветная трассировка, лучше детали, в 2–4× быстрее на фото |
native (встроенный) |
--engine native |
без установки, офлайн, детерминированный результат |
По умолчанию --engine auto: берётся vtracer, если он установлен, иначе native.
Режимы (-m):
contour (по умолчанию): квантование цветов → контуры → квадратичные Bezier, поддерживает дырки (fill-rule="evenodd"). Тюнинг: --colors, --smooth, --corner, --seam, --bg.mosaic: сетка ячеек из примитивов (--shape rect|circle|triangle|auto), детерминированный микс по --seed, зазор --gap. Тюнинг: --cell, --shape, --gap, --seed.vtracer-параметры: --vtracer-preset bw|poster|photo, --vtracer-mode spline|polygon, --vtracer-color-precision, --vtracer-filter-speckle.
Замер: contour, 8 цветов, macOS arm64. Фото = портрет 1024×1024.
| Картинка | native | vtracer |
|---|---|---|
| лого/иконка 200×150 | 4–99 мс, mce 0.0 | 8–11 мс, файл меньше |
| градиент | 60 мс, 8 путей, mce 5.24 | 17 мс, 20 путей (плавнее) |
| фото 512×512 | 2.46 с, 490 KB, 8 путей | 0.44 с, 312 KB, 642 пути |
| фото 1024×1024 | 9.1 с, 1.2 MB, 8 путей | 2.0 с, 842 KB, 2014 путей |
Итог: для фото vtracer в 2–4× быстрее, легче и детальнее; native — выбор для простых изображений (логотипы, пиксель-арт, иконки): mce 0.0, один путь на цвет, полный офлайн. auto сам выбирает vtracer при наличии.
0 — успех, 1 — ошибка ввода/использования, 2 — сбой движка. При ошибке причина пишется в stderr.Run the documented command against the user’s actual input. Report the command, exit status, files changed or produced, and relevant stdout/stderr. Separate blocked or pre-existing failures from failures introduced by the current work. Do not call the result complete when the script was only described or when an artifact was not reopened and checked.