Potrace: PNG zu SVG mit Transparenz und erhaltenen Löchern
Konvertieren Sie ein PNG mit Potrace, nachdem Sie seinen Alphakanal vorbereitet haben. Befolgen Sie einen getesteten PGM-Workflow, vergleichen Sie Schwellenwerte und überprüfen Sie den Hintergrund und die inneren Löcher des SVG.
Auf dieser Seite
Um ein PNG mit Potrace in SVG zu konvertieren, bereiten Sie zunächst eine Graustufen-Bitmap vor und zeichnen Sie diese dann mit potrace --svg nach. Für dunkle Grafiken auf transparenten Pixeln setzen Sie das Bild auf einer weißen Matte zusammen, bevor Sie die Bitmap speichern. Überprüfen Sie die Schwellenformen und ihre inneren Öffnungen, bevor Sie das SVG annehmen.
Standard Potrace 1.16 liest PBM, PGM, PPM und BMP statt PNG direkt. Das offizielle Handbuch beschreibt einen monochromen Nachzeichnungsvorgang: Zwischentöne werden schwarz oder weiß. Der folgende Arbeitsablauf erstellt eine Volumengeometrie mit leeren Bereichen, anstatt die kontinuierlichen Alphawerte des PNG beizubehalten.
Wenn Sie einen Browser-Workflow für ein bereits vorhandenes Bild bevorzugen, bietet PerfectVector eine Bild-in-Pfad-Konvertierung und eine kostenlose Vorschau. Beginnen Sie kostenlos mit Ihrem eigenen Bild und vergleichen Sie dann dessen Silhouette, kleine Öffnungen und Farben mit der Quelle. Entsperren Sie das Ergebnis, bevor Sie es bearbeiten oder exportieren. Das lokale Potrace-Rezept bleibt nützlich, wenn Sie eine explizite Vorverarbeitung und wiederholbare Befehlseinstellungen wünschen.
Was Sie vor dem Nachzeichnen benötigen
Verwenden Sie eine installierte ausführbare Potrace-Datei, Python 3 mit Pillow und das Original-PNG. Dieses Rezept wurde mit Potrace 1.16 und Pillow 11.3.0 durchgeführt. Behalten Sie eine Kopie der Eingabe und arbeiten Sie in einem separaten Ordner, damit jede Schwellenwertvariante einen eindeutigen Dateinamen hat.
Der Ausgangsfall ist ein dunkles Logo, Icon oder eine Zeichnung auf hellem oder transparentem Hintergrund. Wenn Ihr Motiv hell auf dunkel ist, entscheiden Sie, wie Sie das Bild umkehren oder auf andere Weise vorbereiten, bevor Sie dieses Rezept anwenden. Informationen zu einem interaktiven Editor-Workflow finden Sie unter Inkscape Trace Bitmap.
Eine Matte ist der einfarbige Hintergrund, der zum Auflösen transparenter Pixel vor dem Nachzeichnen verwendet wird. Ein Schwellenwert ist der Helligkeitsgrenzwert, der das vorbereitete Bild in Vordergrund und Hintergrund unterteilt. Diese Auswahl erfolgt, bevor die Kontur zur SVG-Geometrie wird.
1. Lösen Sie die Transparenz auf, bevor Sie die Bitmap speichern
PNG speichert Farbe und Deckkraft separat. Der Alphakanal beschreibt die Deckkraft jedes Pixels. Die PNG-Spezifikation erläutert diese Darstellung; Ein vollständig transparentes Pixel kann immer noch RGB-Werte übertragen. Durch das Weglassen des Alphakanals werden diese Pixel nicht auf dem weißen Hintergrund zusammengesetzt, den Sie möglicherweise in einem Bildbetrachter gesehen haben.
Für einen dunklen Fleck platzieren Sie das Bild bewusst über Weiß. Dieses Python-Snippet öffnet artwork.png, setzt es zu einem gleich großen weißen Bild zusammen, wandelt dieses Ergebnis in Graustufen um und speichert 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")In der alpha_composite-Dokumentation von Pillow wird das zweite Bild als über dem ersten zusammengesetzt definiert. Beide Bilder hier haben übereinstimmende Abmessungen und RGBA-Modus.
Öffnen Sie das vorbereitete PGM vor der Verfolgung. Der äußere Hintergrund sollte weiß, der vorgesehene Vordergrund dunkel und die wichtigen Lücken sichtbar sein. Ein schwarzes Rechteck in dieser Phase ist ein Vorverarbeitungsproblem. Eine spätere Änderung der SVG-Füllregeln kann eine Öffnung, die den Tracer nie erreicht hat, nicht wiederherstellen.

2. Verfolgen Sie das vorbereitete PGM
Führen Sie dies in dem Ordner aus, der artwork.pgm enthält:
potrace artwork.pgm --svg --blacklevel 0.5 --turdsize 2 --output artwork.svg--blacklevel 0.5 wählt den Graustufen-Grenzwert. --turdsize 2 behält Potraces standardmäßige Unterdrückung kleiner Flecken explizit bei. Verwenden Sie einen neuen Ausgabenamen, wenn Sie eine Einstellung ändern, und vergleichen Sie dann die Dateien, anstatt Ihre Referenz wiederholt zu überschreiben.
Ändern Sie jeweils ein Steuerelement:
| Kontrolle | Was Sie überprüfen sollten |
|---|---|
--blacklevel | Ob schwache Markierungen in den Vordergrund treten und schmale Öffnungen leer bleiben |
--turdsize | Ob kleine isolierte Formen Rauschen oder absichtliche Details sind |
--alphamax | Eckenbehandlung; Trotz des Namens handelt es sich hier nicht um eine Steuerung der Deckkraft |
Ein höherer Schwarzwertschwellenwert kann mehr hellgraue Pixel im Vordergrund umfassen. Das kann eine schwache Linie verstärken oder eine helle Öffnung schließen. Beurteilen Sie gemeinsam die vorbereitete Bitmap und die resultierende Kontur. Durch die Glättung kann ein Zähler nicht wiederhergestellt werden, nachdem der Schwellenwert ihn gefüllt hat.
Was die beiden Original-Testbilder zeigten
Wir haben zwei kontrollierte 256 × 256 PNGs erstellt und die oben genannten Vorverarbeitungs- und Potrace-Befehle ausgeführt. Einer war ein schwarzer Ring mit transparenten Pixeln außen und innen. Das andere war eine undurchsichtige dunkle Markierung mit einer schmalen grauen Markierung, der eingeschlossenen Öffnung innerhalb der Markierung. Wir haben die generierten SVGs mit einem Renderer untersucht und ihre Mitten- und Außentransparenz überprüft.
| Input und Vorbereitung | Beobachtetes SVG-Ergebnis |
|---|---|
| Transparenter Ring, Alpha wird vor der Graustufenkonvertierung verworfen | Eine gefüllte schwarze Leinwand; das Äußere und die beabsichtigte Öffnung rückten in den Vordergrund |
| Derselbe Ring, vor der Graustufenkonvertierung auf Weiß zusammengesetzt | Das Äußere und die Mitte waren leer; der Ring blieb gefüllt |
| Schmale graue Theke, weißer Verbundstoff, Schwarzwert 0,5 | Der Schalter blieb geöffnet |
| Gleiches vorbereitetes Gegenbild, Schwarzwert 0,8 | Der Zähler füllte sich |
Die unsichtbaren Pixel der Ringsteuerung trugen schwarze RGB-Werte. Durch das Ignorieren von Alpha wurden diese Werte dem Schwellenwert ausgesetzt. Die Weiß-Verbundversion löste sie zuerst in Weiß auf. Dies erklärt die Blackbox dieser Probe; Es wird nicht behauptet, dass jedes PNG auf die gleiche Weise scheitern wird.
Der Gegentest hielt die Eingabe und andere Einstellungen konstant. Lediglich der Schwellenwert hat sich geändert. Das Ergebnis zeigt, warum eine dunkler aussehende Spur nicht automatisch eine bessere Spur ist. Überprüfen Sie die Funktion, die Sie benötigen, anstatt die Einstellung mit der schwersten Silhouette zu wählen.
Dabei handelte es sich um digitale Überprüfungen zweier Original-Testdateien, in deren SVG-Ausgaben kein eingebettetes Rasterbild enthalten war. Wir haben die Qualität von Potrace's nicht mit PerfectVector verglichen, die Dateien nicht in einen Cutter importiert oder ein physisches Ergebnis getestet.
3. Überprüfen Sie Löcher und Hintergrund in der gespeicherten SVG-Datei
Platzieren Sie die SVG-Datei auf einem kontrastierenden Hintergrund. Dieser Hintergrund sollte sowohl im Außenbereich als auch in jeder vorgesehenen Öffnung sichtbar sein. Weiße Farbe kann einem Loch auf einer weißen Seite ähneln, daher reicht ein Miniaturbild allein nicht aus.
Ein SVG-zusammengesetzter Pfad kann eine äußere Kontur und eine innere Öffnung innerhalb eines Objekts beschreiben. Wenn die Öffnung in der verfolgten Geometrie bereits fehlt, kehren Sie zum PGM und zum Schwellenwert zurück. Wenn es in einem Renderer vorhanden ist, aber nach dem Import ausgefüllt wird, untersuchen Sie stattdessen die Pfadinterpretation der empfangenden App. Der Leitfaden zur Fehlerbehebung bei SVG-Lücken trennt diese Fälle.
Überprüfen Sie die gespeicherte Datei auf Folgendes:
- die beabsichtigte Silhouette und kleine Lücken;
- echter leerer Raum außerhalb der Marke und innerhalb ihrer Theken;
- verirrte Flecken, die nicht zu Objekten werden sollten;
- eine geeignete Dokumentgröße im Ziel-Workflow;
- Pfade statt einer eingebetteten Kopie des PNG.
Wenn nur der Hintergrund falsch aussieht, verwenden Sie die Diagnose für den transparenten SVG-Hintergrund, bevor Sie jedes weiße Objekt löschen. Wenn ein winziges Merkmal in der Quelle tatsächlich fehlt, verwenden Sie ein größeres Original oder zeichnen Sie dieses Detail neu. Der Leitfaden zur Quellqualität erklärt diese Grenze.
Wenn dieser monochrome Workflow passt
Potrace passt zu einem Zeichen, das sich durch eine gefüllte Silhouette und absichtliche Öffnungen ausdrücken lässt. Behalten Sie das Raster bei, wenn weiche Schattierungen oder teilweise Deckkraft Teil des Bildmaterials sind, das Sie erhalten müssen. Für mehrere aussagekräftige Farben verwenden Sie einen farbfähigen Vektorisierungsworkflow oder bereiten Sie bewusst separate Durchgänge vor; Dieser einzelne Monochrom-Befehl erstellt keine Farbpalette.
Sie können eine kritische Kontur auch mit einem Vektoreditor neu zeichnen. Durch die automatische Nachverfolgung wird eine Kandidatenform bereitgestellt, und Ihr Verwendungszweck bestimmt, ob Sie diese beibehalten oder bearbeiten möchten.
FAQ
Kann Potrace ein PNG direkt öffnen? Standard Potrace 1.16 akzeptiert PBM-, PGM-, PPM- und BMP-Eingaben. Dekodieren Sie das PNG zunächst mit einem anderen Bildtool, machen Sie die Transparenzbehandlung explizit und speichern Sie vor dem Nachzeichnen eine unterstützte Bitmap.
Behält Potrace die PNG-Transparenz bei? Der monochrome Workflow erstellt gefüllte Geometrie und leere Bereiche. Die kontinuierlichen Alphawerte des PNG bleiben dabei nicht erhalten. Fügen Sie vor der Schwellenwertermittlung transparente Pixel auf einer absichtlichen Matte zusammen und überprüfen Sie dann die leeren Bereiche der SVG-Datei vor einem kontrastierenden Hintergrund.
Ist Alphamax die PNG-Alpha-Einstellung? Nein. Potraces Alphamax steuert die Eckenbehandlung in den gezeichneten Kurven. Es bestimmt nicht, wie der Deckkraftkanal eines PNG vor dem Nachzeichnen zusammengesetzt wird.
Warum ist ein Loch verschwunden? Prüfen Sie, ob die Öffnung im vorbereiteten Bitmap und der ausgewählten Schwelle noch sichtbar ist. Wenn der Schwellenwert erreicht ist, ändern Sie die Vorbereitung oder den Cutoff und ziehen Sie ihn zurück. Wenn die SVG-Datei die Öffnung enthält, sie aber nur von einer empfangenden App ausgefüllt wird, überprüfen Sie dort die Verarbeitung von zusammengesetzten Pfaden und Füllregeln.
Quellen
- Potrace – Manuell – Unterstützte Eingabeformate, monochrome Schwellenwerte, SVG-Ausgabe und die genannten Befehlsoptionen.
- Pillow – Bildmodul – RGBA-Bildzusammenstellung und die im Vorbereitungs-Snippet verwendete Reihenfolge.
- W3C – PNG-Spezifikation – Farbmuster und Alpha-Darstellung in PNG-Bildern.
- W3C – SVG-Pfade – Zusammengesetzte Pfade und Innenkonturen, die Öffnungen beschreiben können.
Beginnen Sie kostenlos mit Ihrem eigenen Bild in PerfectVector und vergleichen Sie dann dessen Silhouette und innere Öffnungen mit der Quelle, bevor Sie den nächsten Bearbeitungsschritt wählen.
Mehr aus dem Blog
SVGcode: Die exportierten Vektorformen überprüfen
Zeichnen Sie ein flaches Farbbild in SVGcode nach, kopieren Sie die eigentliche SVG-Datei und überprüfen Sie deren Palette, innere Öffnungen, Hintergrund und Leinwand, bevor Sie die Datei in Ihrem Design verwenden.
ImageMagick: PNG zu SVG und den Tracing-Delegaten prüfen
Finden Sie heraus, ob Ihr ImageMagick PNG-to-SVG-Befehl Pfade erstellt, welchen Ablaufverfolgungsdelegaten er verwendet und warum ein Farbbild zu einer monochromen SVG-Ablaufverfolgung werden kann.


