Potrace: PNG do SVG z obsługą alfy i zachowaniem otworów
Konwertuj plik PNG za pomocą Potrace po przygotowaniu jego kanału alfa. Postępuj zgodnie ze sprawdzonym przepływem pracy PGM, porównaj progi i sprawdź tło SVG i wewnętrzne dziury.
Na tej stronie
Aby przekonwertować plik PNG na SVG za pomocą Potrace, przygotuj najpierw bitmapę w skali szarości, a następnie prześledź ją za pomocą potrace --svg. W przypadku ciemnej kompozycji na przezroczystych pikselach przed zapisaniem mapy bitowej złóż obraz na białą matę. Przed zaakceptowaniem SVG sprawdź kształty progów i ich wewnętrzne otwory.
Standardowy Potrace 1.16 odczytuje bezpośrednio PBM, PGM, PPM i BMP, a nie bezpośrednio PNG. Jej oficjalny podręcznik opisuje operację śledzenia monochromatycznego: odcienie pośrednie stają się czarne lub białe. Poniższy przepływ pracy tworzy bryłą geometrię z pustymi regionami, zamiast zachowywać ciągłe wartości alfa PNG.
Jeśli wolisz przepływ pracy w przeglądarce dla obrazu, który już masz, PerfectVector oferuje konwersję obrazu na ścieżkę i bezpłatny podgląd. Zacznij od własnego obrazu, a następnie porównaj jego sylwetkę, małe otwory i kolory ze źródłem. Odblokuj wynik przed edycją lub eksportem. Lokalny przepis Potrace pozostaje przydatny, gdy chcesz jawnego przetwarzania wstępnego i powtarzalnych ustawień poleceń.
Czego potrzebujesz przed śledzeniem
Użyj zainstalowanego pliku wykonywalnego Potrace, Pythona 3 z Pillow i oryginalnego pliku PNG. Ten przepis został wykonany z Potrace 1.16 i Pillow 11.3.0. Zachowaj kopię danych wejściowych i pracuj w osobnym folderze, aby każdy wariant progu miał odrębną nazwę pliku.
Przypadek początkowy to ciemne logo, ikona lub rysunek na jasnym lub przezroczystym tle. Jeśli fotografowany obiekt jest jasny w ciemnym kolorze, przed zastosowaniem tego przepisu zdecyduj, w jaki sposób odwrócić obraz lub w inny sposób przygotować go. Aby zapoznać się z interaktywnym edytorem, zobacz Mapa bitowa śledzenia Inkscape.
matówka to jednolite tło używane do rozpoznawania przezroczystych pikseli przed obrysowaniem. Próg to odcięcie jasności dzielące przygotowany obraz na pierwszy plan i tło. Te wybory mają miejsce, zanim kontur stanie się geometrią SVG.
1. Rozwiąż przezroczystość przed zapisaniem mapy bitowej
PNG przechowuje oddzielnie kolor i krycie. Kanał alfa opisuje nieprzezroczystość każdego piksela. Specyfikacja PNG wyjaśnia tę reprezentację; w pełni przezroczysty piksel może nadal przenosić wartości RGB. Upuszczenie kanału alfa nie powoduje połączenia tych pikseli z białym tłem, które mogłeś zobaczyć w przeglądarce obrazów.
Aby uzyskać ciemny znak, celowo umieść obraz na białym. Ten fragment kodu Pythona otwiera plik artwork.png, łączy go w biały obraz o jednakowej wielkości, konwertuje wynik do skali szarości i zapisuje artwork.pgm:
from PIL import Image
src = Image.open("artwork.png").convert("RGBA")
matte = Image.new("RGBA", src.size, "white")
gray = Image.alpha_composite(matte, src).convert("L")
gray.save("artwork.pgm")Pillow's alpha_composite definiuje drugi obraz jako złożony z pierwszego. Obydwa obrazy mają pasujące wymiary i tryb RGBA.
Przed rozpoczęciem śledzenia otwórz przygotowany PGM. Jego tło zewnętrzne powinno być białe, planowany pierwszy plan ciemny, a ważne luki widoczne. Czarny prostokąt na tym etapie stanowi problem w przetwarzaniu wstępnym; zmiana później reguł wypełniania SVG nie może przywrócić otworu, który nigdy nie dotarł do znacznika.

2. Prześledź przygotowany PGM
Uruchom to w folderze zawierającym artwork.pgm:
potrace artwork.pgm --svg --blacklevel 0.5 --turdsize 2 --output artwork.svg--blacklevel 0.5 wybiera odcięcie skali szarości. --turdsize 2 wyraźnie utrzymuje domyślne tłumienie małych plamek w Potrace. Użyj nowej nazwy wyjściowej, gdy zmienisz ustawienie, a następnie porównaj pliki, zamiast wielokrotnie nadpisywać odniesienie.
Zmień jedną kontrolkę na raz:
| Kontrola | Co recenzować |
|---|---|
--blacklevel | Czy słabe ślady staną się pierwszym planem, a wąskie otwory pozostaną puste |
--turdsize | Niezależnie od tego, czy małe, izolowane kształty są hałasem, czy zamierzonymi szczegółami |
--alphamax | Obróbka narożników; pomimo swojej nazwy, nie jest to kontrola krycia |
Wyższy próg poziomu czerni może obejmować więcej jasnoszarych pikseli na pierwszym planie. Może to wzmocnić słabą linię lub zamknąć lekki otwór. Oceń wspólnie przygotowaną bitmapę i powstały kontur. Wygładzanie nie może zrekonstruować licznika po zapełnieniu go przez próg.
Co pokazały dwa oryginalne obrazy testowe
Stworzyliśmy dwa kontrolowane pliki PNG 256 × 256 i uruchomiliśmy powyższe polecenia przetwarzania wstępnego i Potrace. Jednym z nich był czarny pierścień z przezroczystymi pikselami na zewnątrz i wewnątrz. Drugim był nieprzezroczysty, ciemny znak z wąską szarą licznikiem i zamkniętym otworem wewnątrz znaku. Sprawdziliśmy wygenerowane pliki SVG za pomocą modułu renderującego i sprawdziliśmy ich przezroczystość środkową i zewnętrzną.
| Wprowadzanie i przygotowanie | Zaobserwowany wynik SVG |
|---|---|
| Przezroczysty pierścień, alfa odrzucona przed konwersją na skalę szarości | Wypełnione czarne płótno; na pierwszy plan wysunęło się zewnętrzne i zamierzone otwarcie |
| Ten sam pierścień, wkomponowany w biel przed konwersją na skalę szarości | Zewnętrzna część i środek były puste; pierścień pozostał wypełniony |
| Wąski szary licznik, biały kompozyt, poziom czerni 0.5 | Kontuar pozostał otwarty |
| Ten sam przygotowany obraz licznika, poziom czerni 0.8 | Licznik uzupełniony |
Niewidoczne piksele kontrolki pierścienia przenosiły czarne wartości RGB. Ignorowanie alfa naraziło te wartości na próg. Wersja z białym kompozytem najpierw rozwiązała je na biały. To wyjaśnia czarną skrzynkę tej próbki; nie jest to twierdzenie, że każde PNG zawiedzie w ten sam sposób.
Test licznika utrzymał wejście i inne ustawienia na stałym poziomie. Zmienił się tylko próg. Wynik pokazuje, dlaczego ciemniejszy ślad nie jest automatycznie lepszym śladem. Zamiast wybierać ustawienie o najcięższej sylwetce, sprawdź potrzebną funkcję.
Były to cyfrowe kontrole dwóch oryginalnych plików testowych, bez osadzonego obrazu rastrowego w wynikach SVG. Nie porównywaliśmy jakości Potrace's z PerfectVector, nie importowaliśmy plików do plotera ani nie testowaliśmy wyniku fizycznego.
3. Sprawdź dziury i tło w zapisanym pliku SVG
Umieść plik SVG na kontrastowym tle. Tło powinno być widoczne zarówno przez obszar zewnętrzny, jak i przez każdy zamierzony otwór. Biała farba może przypominać dziurę na białej kartce, dlatego sama miniatura nie wystarczy.
ścieżka złożona SVG może opisywać zewnętrzny kontur i wewnętrzny otwór w jednym obiekcie. Jeśli otworu już nie ma w śledzonej geometrii, wróć do PGM i progu. Jeśli istnieje w jednym module renderującym, ale zostaje zapełniony po zaimportowaniu, zamiast tego sprawdź interpretację ścieżki aplikacji odbierającej. Przewodnik dotyczący rozwiązywania problemów z dziurami SVG oddziela te przypadki.
Sprawdź zapisany plik pod kątem:
- zamierzona sylwetka i małe szczeliny;
- naprawdę pusta przestrzeń na zewnątrz znaku i wewnątrz jego lad;
- bezpańskie plamki, które nie powinny stać się przedmiotami;
- odpowiedni rozmiar dokumentu w docelowym obiegu dokumentów;
- paths zamiast osadzonej kopii pliku PNG.
Jeśli tylko tło wygląda nieprawidłowo, przed usunięciem każdego białego obiektu skorzystaj z diagnostyki przezroczystego tła SVG. Jeśli w źródle rzeczywiście brakuje jakiegoś drobnego elementu, użyj większego oryginału lub przerysuj ten szczegół. Przewodnik po jakości źródła wyjaśnia tę granicę.
Kiedy pasuje ten monochromatyczny przepływ pracy
Potrace pasuje do znaku, który można wyrazić jako wypełniona sylwetka i zamierzone otwory. Zachowaj raster, jeśli miękkie cieniowanie lub częściowe krycie jest częścią kompozycji, którą chcesz zachować. Aby uzyskać kilka znaczących kolorów, użyj procesu wektoryzacji obsługującego kolory lub przygotuj celowo osobne przejścia; to pojedyncze polecenie monochromatyczne nie tworzy palety kolorów.
Możesz także użyć edytora wektorów, aby przerysować krytyczny kontur. Automatyczne śledzenie zapewnia potencjalny kształt, a zamierzone użycie określa, czy go zachować, czy edytować.
Często zadawane pytania
Czy Potrace może bezpośrednio otworzyć plik PNG? Standard Potrace 1.16 akceptuje wejścia PBM, PGM, PPM i BMP. Najpierw zdekoduj plik PNG za pomocą innego narzędzia do tworzenia obrazów, wyraźnie zaznacz przezroczystość i zapisz obsługiwaną mapę bitową przed rozpoczęciem śledzenia.
Czy Potrace zachowuje przezroczystość PNG? Monochromatyczny tok pracy tworzy wypełnioną geometrię i puste obszary. Nie zachowuje ciągłych wartości alfa PNG. Przed ustawieniem progu złóż przezroczyste piksele w celową matę, a następnie sprawdź puste obszary SVG na kontrastowym tle.
Czy alphamax to ustawienie PNG alfa? Nie. Alphamax firmy Potrace kontroluje obróbkę narożników na narysowanych krzywiznach. Nie określa, w jaki sposób kanał krycia PNG jest komponowany przed śledzeniem.
Dlaczego zniknęła dziura? Sprawdź, czy otwór jest nadal widoczny na przygotowanej bitmapie i wybranym progu. Jeśli próg go wypełnił, zmień przygotowanie lub odcięcie i odtwórz. Jeśli plik SVG zawiera otwór, ale wypełnia go tylko aplikacja odbierająca, sprawdź tam obsługę ścieżki złożonej i reguły wypełniania.
Źródła
- Potrace — Ręczny — Obsługiwane formaty wejściowe, progowanie monochromatyczne, wyjście SVG i nazwane opcje poleceń.
- Pillow — moduł obrazu — komponowanie obrazu RGBA i kolejność zastosowana we fragmencie przygotowawczym.
- W3C — Specyfikacja PNG — Próbki kolorów i reprezentacja alfa w obrazach PNG.
- W3C — Ścieżki SVG — Ścieżki złożone i kontury wewnętrzne, które mogą opisywać otwory.
Zacznij od własnego obrazu w PerfectVector, a następnie porównaj jego sylwetkę i wewnętrzne otwory ze źródłem przed wybraniem kolejnego kroku edycji.
Więcej z bloga
SVGcode: sprawdź eksportowane kształty
Obrysuj obraz w jednolitych kolorach w SVGcode, skopiuj rzeczywisty plik SVG i sprawdź jego paletę, wewnętrzne otwory, tło i płótno przed użyciem pliku w swoim projekcie.
ImageMagick: PNG do SVG i sprawdzanie modułu trasowania
Dowiedz się, czy polecenie ImageMagick PNG-to-SVG tworzy ścieżki, których używa delegat śledzenia, i dlaczego kolorowy obraz może stać się monochromatycznym śladem SVG.


