raster-to-svg
Skill6 starsChanged 3 months agoMITView on GitHub
Конвертер PNG в векторный SVG. Скрипт raster_to_svg.py читает PNG (файл или stdin) и отдаёт SVG: при установленном vtracer-cli используется он (качественная цветная трассировка), иначе встроенный нативный трассировщик на чистом Python 3 stdlib (свой декодер PNG через zlib, без pip-зависимостей). Два режима: contour (квантование median-cut, контурная трассировка, квадратичные Bezier, fill-rule evenodd, дырки) и mosaic (сетка примитивов rect/circle/triangle/diamond с детерминированным миксом по --seed). SVG всегда валидируется (round-trip через XML-парсер) перед записью, вывод детерминирован. Триггеры: 'png в svg', 'картинка в svg', 'растровое в векторное', 'векторизация', 'конвертнуть в svg', 'trace image', 'convert png to svg', 'vectorize', 'изображение в вектор', 'трассировка изображения'.
- Installs packages
In this repository59 other files it gives its agents.
- skills/chronos/references/AGENTS.mdAGENTS.md
- api-contract-testingSkill
- api-doc-generatorSkill
- canonSkill
- censorSkill
- changelog-generatorSkill
- chronosSkill
- code-reviewSkill
- commit-lintSkill
- commit-message-writerSkill
- coverage-analyzerSkill
- csv-proSkill
- data-analysisSkill
- deweySkill
- diagram-makerSkill
- doc-compareSkill
- docs-productSkill
- docs-projectSkill
- docs-systemSkill
- dsh-runnerSkill
- frontend-a11ySkill
- frontend-design-tasteSkill
- frontend-perfectionSkill
- frontend-performanceSkill
- frontend-testingSkill
- github-repo-hygieneSkill
- long-running-agent-workflowSkill
- mermaid-to-imageSkill
- mobile-frontendSkill
- pdf-report-builderSkill
- plan-skillSkill
- prd-to-appSkill
- presentation-craftSkill
- presentation-engineeringSkill
- presentation-makerSkill
- reddit-karmaSkill
- repo-community-filesSkill
- repo-metadata-healthSkill
- repo-readme-assetsSkill
- repo-social-previewSkill
- secret-scannerSkill
- security-reviewSkill
- seo-auditSkill
- seo-contentSkill
- seo-crawlSkill
- seo-schemaSkill
- seo-toolkitSkill
- skill-feedbackSkill
- skill-forgeSkill
- skill-suggesterSkill
- sql-helperSkill
- systematic-debuggerSkill
- test-generatorSkill
- test-graphicsSkill
- velesSkill
- version-bumperSkill
- video-script-writerSkill
- web-replicationSkill
- web-scraperSkill
The file
We split this skill into the rules it gives an agent
3 rules. About 0 are common, 3 are distinctive, and 0 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈3
Distinctive · estimate
This author's own choices. Worth a look.
0
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 22
Use this skill when:
- Distinctive: line 28
Do NOT use when:
- Distinctive: line 116
Do not use for raster edits or arbitrary image generation.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Raster To SVG
Превращает растровую PNG-картинку в масштабируемый векторный SVG.
Загружай этот скилл когда нужно перевести растровое изображение в вектор: для логотипов, иконок, схем, README-ассетов или любого PNG, который должен масштабироваться без потери качества.
🎯 When to use
Use this skill when:
- Есть PNG-файл (логотип, иконка, схема) и нужен SVG для вставки в веб/документацию
- Просят «векторизировать картинку», «png в svg», «trace image», «convert png to svg»
- Нужна детерминированная трассировка без внешних зависимостей (только Python 3)
- Хочется стилизованный результат: контурную обводку или мозаику из примитивов
Do NOT use when:
- Исходник уже в векторе (SVG/PDF/EPS) — трассировка растра не нужна
- Нужна фотореалистичная векторизация сложных фото — лучше специализированный редактор
- Формат не PNG — CLI принимает только PNG на входе (в веб-интерфейсе JPG/JPEG/WEBP конвертируются автоматически в браузере)
📦 Files
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, скачивание
🧰 Usage
# Базово: 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 МБ).
- Конвертация полностью локальная — картинка никуда не отправляется.
- API:
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для пакетной обработки. - UI-фичи: редактор палитры (свотчи, перекраска, слияние цветов), экспорт DXF/EPS/PNG, пакетная обработка (очередь PNG → один .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.
⚡ Производительность движков (эмпирика, aug 2026)
Замер: 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 при наличии.
🔬 Проверка результата
- SVG всегда проходит XML-валидацию (round-trip через парсер) перед записью — файл корректен для вставки в HTML/Markdown.
- Детерминизм: один и тот же вход даёт байт-идентичный SVG при повторном запуске.
- Коды выхода:
0— успех,1— ошибка ввода/использования,2— сбой движка. При ошибке причина пишется в stderr.
Boundaries
- Do not use for raster edits or arbitrary image generation; it only vectorizes existing raster input.
Evidence and completion gate
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.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

