Skip to content
Back to skills

Raster To Svg

ASecurity

Конвертер 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 с детерминированным миксом по...

  • 6 stars
  • 0 votes
  • 0 copies
  • 3 views
  • Added September 3, 2026
ai-agentspythongobashapi

Works with

  • cli
  • api
  • mcp

Security analysis

A100/100

Pro scans all 20 files and shows the line behind each finding

Scanned September 20, 2026

npx -y skills add bestdeejay-design/agent-skills --skill raster-to-svg --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Raster To Svg?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Raster To Svg
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/bestdeejay-design-raster-to-svg/badge)](https://www.skillsdirectory.com/skills/bestdeejay-design-raster-to-svg)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: raster-to-svg
description: "Конвертер 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', 'изображение в вектор', 'трассировка изображения'."
license: MIT
metadata:
  author: best
  version: 1.1.1
  compatibility: "Requires Python 3 stdlib; optional: vtracer-cli (cargo install vtracer-cli) для качественной цветной трассировки"
when_to_use: "Use when converting a raster image (PNG/logo/icon) to scalable vector SVG: 'png to svg', 'vectorize image', 'trace image', 'convert png to svg', 'картинка в svg', 'векторизация', 'трассировка изображения'. Example: 'turn this logo.png into an SVG' or 'convert png to svg'."
---

# 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

```bash
# Базово: 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, превью, код, скачивание, копирование):

```bash
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.

Files in this skill

  • README.md5.1 KB
  • README.ru.md7.7 KB
  • SKILL.md9.5 KB
  • evals/evals.json2.9 KB
  • evals/fixtures/alpha.png485 B
  • evals/fixtures/gradient.png815 B
  • evals/fixtures/pixelart.png165 B
  • evals/fixtures/ring.png452 B
  • evals/fixtures/shapes.png932 B
  • evals/gen_fixtures.py3.4 KB
  • evals/qa_pixels.py4.8 KB
  • evals/qa_shapes-src.png3.6 KB
  • examples/web/app.js47.3 KB
  • examples/web/index.html18.5 KB
  • examples/web/style.css15.4 KB
  • references/BENCHMARK.md2.6 KB
  • scripts/raster_to_svg.py40.2 KB
  • scripts/raster_to_svg_mcp.py12.9 KB
  • scripts/raster_to_svg_server.py20.3 KB
  • scripts/start_server.bat482 B

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.