# netkaruma/image-svg-vectorizer architecture

> Architecture diagram of the GitHub repository netkaruma/image-svg-vectorizer, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-25). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/netkaruma/image-svg-vectorizer
- Repository: https://github.com/netkaruma/image-svg-vectorizer

## Overview

This Python library converts raster images into color-simplified SVGs, either one image at a time or in a directory batch. The principal workflow is image processing and color reduction, contour extraction, then SVG export; optional outputs include comparison previews and processing statistics. The README documents transparency handling, automatic color selection, and acceleration as processing capabilities. Some implementation details are omitted from the excerpts, so the graph shows only supported wiring and treats those capabilities as part of the vectorizer rather than inventing separate components.

Main entry points: [`image_svg_vectorizer/vectorizer.py`](https://github.com/netkaruma/image-svg-vectorizer/blob/main/image_svg_vectorizer/vectorizer.py) (Image vectorizer), [`image_svg_vectorizer/batch_processor.py`](https://github.com/netkaruma/image-svg-vectorizer/blob/main/image_svg_vectorizer/batch_processor.py) (Directory processor), [`image_svg_vectorizer/svg_exporter.py`](https://github.com/netkaruma/image-svg-vectorizer/blob/main/image_svg_vectorizer/svg_exporter.py) (SVG and stats exporter), [`image_svg_vectorizer/color_processor.py`](https://github.com/netkaruma/image-svg-vectorizer/blob/main/image_svg_vectorizer/color_processor.py) (Color contours)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["Public workflows"]
  node_single["Single-image API<br/>[vectorizer.py]"]
  node_batch["Batch API<br/>[batch_processor.py]"]
  node_batch_processor["Directory processor<br/>[batch_processor.py]"]
end

subgraph group_processing["Image processing"]
  node_vectorizer["Image vectorizer<br/>[vectorizer.py]"]
  node_quantization["Color simplification<br/>[vectorizer.py]"]
  node_color_processor["Color contours<br/>[color_processor.py]"]
end

subgraph group_export["Output generation"]
  node_svg_exporter["SVG and stats exporter<br/>[svg_exporter.py]"]
  node_preview["Preview generation<br/>[vectorizer.py]"]
end

subgraph group_model["Shared data"]
  node_results["Processing results<br/>[utils.py]"]
  node_color_info["Color and contour data<br/>[utils.py]"]
end

node_user(("Library user"))
node_image_file["Raster images"]
node_svg_file["SVG output"]
node_preview_file["Preview image"]
node_stats_file["Stats JSON"]

node_user -->|"invokes"| node_single
node_user -->|"invokes"| node_batch
node_batch -->|"creates"| node_batch_processor
node_batch_processor -->|"processes images"| node_vectorizer
node_image_file -->|"reads"| node_vectorizer
node_single -->|"processes image"| node_vectorizer
node_vectorizer -->|"simplifies colors"| node_quantization
node_vectorizer -->|"extracts contours"| node_color_processor
node_color_processor -->|"produces"| node_color_info
node_vectorizer -->|"assembles"| node_results
node_color_info -->|"included in"| node_results
node_vectorizer -->|"exports SVG"| node_svg_exporter
node_svg_exporter -->|"converts contours"| node_color_processor
node_svg_exporter -->|"writes"| node_svg_file
node_vectorizer -->|"creates preview"| node_preview
node_preview -->|"writes"| node_preview_file
node_vectorizer -->|"exports statistics"| node_svg_exporter
node_svg_exporter -->|"writes"| node_stats_file
node_batch_processor -->|"requests export"| node_svg_file
node_batch_processor -->|"requests preview"| node_preview_file
node_batch_processor -->|"requests statistics"| node_stats_file

click node_single "https://github.com/netkaruma/image-svg-vectorizer/blob/main/image_svg_vectorizer/vectorizer.py"
click node_batch "https://github.com/netkaruma/image-svg-vectorizer/blob/main/image_svg_vectorizer/batch_processor.py"
click node_batch_processor "https://github.com/netkaruma/image-svg-vectorizer/blob/main/image_svg_vectorizer/batch_processor.py"
click node_vectorizer "https://github.com/netkaruma/image-svg-vectorizer/blob/main/image_svg_vectorizer/vectorizer.py"
click node_quantization "https://github.com/netkaruma/image-svg-vectorizer/blob/main/image_svg_vectorizer/vectorizer.py"
click node_color_processor "https://github.com/netkaruma/image-svg-vectorizer/blob/main/image_svg_vectorizer/color_processor.py"
click node_results "https://github.com/netkaruma/image-svg-vectorizer/blob/main/image_svg_vectorizer/utils.py"
click node_color_info "https://github.com/netkaruma/image-svg-vectorizer/blob/main/image_svg_vectorizer/utils.py"
click node_svg_exporter "https://github.com/netkaruma/image-svg-vectorizer/blob/main/image_svg_vectorizer/svg_exporter.py"
click node_preview "https://github.com/netkaruma/image-svg-vectorizer/blob/main/image_svg_vectorizer/vectorizer.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_single,node_batch,node_batch_processor,node_user,node_preview_file toneBlue
class node_vectorizer,node_quantization,node_color_processor toneAmber
class node_svg_exporter,node_preview toneMint
class node_results,node_color_info toneRose
class node_image_file,node_svg_file,node_stats_file toneIndigo
```

## Components

### Public workflows

- [Single-image API](https://github.com/netkaruma/image-svg-vectorizer/blob/main/image_svg_vectorizer/vectorizer.py): `image_svg_vectorizer/vectorizer.py`
- [Batch API](https://github.com/netkaruma/image-svg-vectorizer/blob/main/image_svg_vectorizer/batch_processor.py): `image_svg_vectorizer/batch_processor.py`
- [Directory processor](https://github.com/netkaruma/image-svg-vectorizer/blob/main/image_svg_vectorizer/batch_processor.py): `image_svg_vectorizer/batch_processor.py`

### Image processing

- [Image vectorizer](https://github.com/netkaruma/image-svg-vectorizer/blob/main/image_svg_vectorizer/vectorizer.py): `image_svg_vectorizer/vectorizer.py`
- [Color simplification](https://github.com/netkaruma/image-svg-vectorizer/blob/main/image_svg_vectorizer/vectorizer.py): `image_svg_vectorizer/vectorizer.py`
- [Color contours](https://github.com/netkaruma/image-svg-vectorizer/blob/main/image_svg_vectorizer/color_processor.py): `image_svg_vectorizer/color_processor.py`

### Output generation

- [SVG and stats exporter](https://github.com/netkaruma/image-svg-vectorizer/blob/main/image_svg_vectorizer/svg_exporter.py): `image_svg_vectorizer/svg_exporter.py`
- [Preview generation](https://github.com/netkaruma/image-svg-vectorizer/blob/main/image_svg_vectorizer/vectorizer.py): `image_svg_vectorizer/vectorizer.py`

### Shared data

- [Processing results](https://github.com/netkaruma/image-svg-vectorizer/blob/main/image_svg_vectorizer/utils.py): `image_svg_vectorizer/utils.py`
- [Color and contour data](https://github.com/netkaruma/image-svg-vectorizer/blob/main/image_svg_vectorizer/utils.py): `image_svg_vectorizer/utils.py`

### Other components

- **Library user**
- **Raster images**
- **SVG output**
- **Preview image**
- **Stats JSON**

## Connections

- Library user → Single-image API: invokes
- Library user → Batch API: invokes
- Batch API → Directory processor: creates
- Directory processor → Image vectorizer: processes images
- Raster images → Image vectorizer: reads
- Single-image API → Image vectorizer: processes image
- Image vectorizer → Color simplification: simplifies colors
- Image vectorizer → Color contours: extracts contours
- Color contours → Color and contour data: produces
- Image vectorizer → Processing results: assembles
- Color and contour data → Processing results: included in
- Image vectorizer → SVG and stats exporter: exports SVG
- SVG and stats exporter → Color contours: converts contours
- SVG and stats exporter → SVG output: writes
- Image vectorizer → Preview generation: creates preview
- Preview generation → Preview image: writes
- Image vectorizer → SVG and stats exporter: exports statistics
- SVG and stats exporter → Stats JSON: writes
- Directory processor → SVG output: requests export
- Directory processor → Preview image: requests preview
- Directory processor → Stats JSON: requests statistics
