Kompaktowe narzędzie CLI napisane w C++ do zautomatyzowanej konwersji obrazów rastrowych na skalowalny format wektorowy.
- Python 3
- Kompilator C++23
- Doxygen do wygenerowania dokumentacji:
- Ubuntu / Debian:
sudo apt-get install doxygen - Arch Linux:
sudo pacman -S doxygen - Windows:
winget install doxygen.doxygen
- Ubuntu / Debian:
Windows:
python -m venv venv
venv\Scripts\activate
pip install scons conanLinux / macOS:
python3 -m venv venv
source venv/bin/activate
pip install scons conanconan profile detectconan install . --build=missingKompilacja projektu:
sconsUruchomienie aplikacji:
# Linux/macOS
./build/img-svg
# Windows
.\build\img-svg.exeUruchomienie testów Catch2:
# Linux/macOS
./build/run-tests
# Windows
.\build\run-tests.exeCzyszczenie plików budowania:
scons -cProjekt używa .clang-format. Najlepiej formatować przez LSP w edytorze przy zapisie pliku.
Generowanie pliku compile_commands.json wymaganego przez LSP clangd:
scons compdbRęczne formatowanie pliku z konsoli:
clang-format -i src/main.cppProjekt używa narzędzia Doxygen, które tworzy dokumentację API na podstawie komentarzy w plikach źródłowych. Polecenie do generowania:
scons docPo pomyślnej kompilacji, wektoryzator obsługuje się z poziomu wiersza poleceń. Należy podać ścieżkę do pliku źródłowego oraz opcjonalnie ścieżkę do pliku wyjściowego za pomocą flagi -o (domyślnie program zapisze wynik w pliku output.svg).
Podstawowe wywołanie:
./build/img-svg wejscie.png -o wyjscie.svg
Przykład użycia flag konfiguracyjnych:
./build/img-svg ./test-images/airplane.jpg -o samolot.svg --max-width 512 --tolerance 3 --colors 12 --stroke 3
Pełna lista dostępnych opcji:
-h,--help— wyświetla komunikat pomocy.-o,--output <plik>— ścieżka do docelowego pliku SVG (domyślnie:output.svg).--colors <liczba>— docelowa liczba kolorów dla algorytmu kwantyzacji K-Means (domyślnie: 16).--min-area <piksele>— minimalne pole obszaru w pikselach; mniejsze plamy będą filtrowane jako szum (domyślnie: 10).--tolerance <wartość>— próg tolerancji dystansu błędu dla upraszczania wierzchołków RDP (domyślnie: 1).--corner-threshold <kąt>— próg kąta decydujący o zachowaniu ostrego rogu lub wygładzeniu ścieżki (domyślnie: 125).--smoothing <wartość>— mnożnik intensywności wygładzania krzywych (domyślnie: 1).--max-width <piksele>— maksymalna dopuszczalna szerokość; większe obrazy zostaną proporcjonalnie pomniejszone (domyślnie: 1200).--stroke <wartość>—stroke-widthw wygenerowanym SVG; 0 aby wyłączyć (domyślnie: 1).-v,--verbose— włącza szczegółowe logowanie poszczególnych etapów w konsoli.
- Karol Adamski
- Bartłomiej Masiak