Bild in SVG in C# konvertieren – Rasterbilder vektorisieren

Quick Answer

Um ein Bild in SVG in C# zu konvertieren, erstellen Sie ein ImageVectorizerConfiguration-Objekt und rufen Converter.ConvertImageToSVG() auf. Aspose.SVG for .NET unterstützt Rastereingaben wie PNG, JPG, BMP, TIFF, GIF und ICO und speichert das nachgezeichnete Vektorergebnis als SVG-Datei.

Vektorisierung ist der Prozess, bei dem Rasterbilder in Vektorgrafiken umgewandelt werden. Statt Pixeln werden Bezierkurven, Splines und Linien verwendet. Der Prozess umfasst Farbquantisierung, Kantenerkennung, Annäherung von Formen und Qualitätsverbesserungen von Pfaden, etwa Glättung oder Vereinfachung. Das Ergebnis wird als Vektorformat wie SVG gespeichert.

Aspose.SVG for .NET bietet zwei Workflows zur Bildvektorisierung: den Converter.ConvertImageToSVG()-Facade für direkte Bild-zu-Datei-Konvertierung und die ImageVectorization API, wenn Ihr Code mit dem erzeugten SVGDocument arbeiten muss.

Dieser Artikel behandelt die direkte Konvertierung von Bildern in SVG mit Converter.ConvertImageToSVG(). Den vollständigen Algorithmus-Workflow und Beispiele für ImageVectorizer.Vectorize() finden Sie unter Bild- und Textvektorisierung und Workflow der Bildvektorisierung.

Wann funktioniert die Konvertierung von Bild in SVG am besten?

Bildvektorisierung funktioniert am besten, wenn die Quelle klare Formen, wenige Farben und erkennbare Grenzen enthält. Für vollfarbige Fotos ist sie meist weniger geeignet, weil die Bewahrung vieler Details ein sehr komplexes SVG erzeugen kann.

Typ des QuellbildsEmpfehlung
Logos, Icons, Symbole, ClipartGute Kandidaten für die Konvertierung von Bild in SVG. Diese Bilder enthalten meist klare Formen und begrenzte Farben.
Diagramme, Karten, Line Art, technische ZeichnungenGut geeignet, wenn Linien und Flächen klar genug nachgezeichnet werden können.
Gescannte ZeichnungenNützlich nach Vorverarbeitung, etwa Rauschreduktion und Kontrastverbesserung.
FotografienMeist nicht ideal für kompaktes SVG. Die Vektorisierung kann viele Pfade und große Ausgabedateien erzeugen.
Niedrig aufgelöste oder verrauschte BilderVerbessern Sie zuerst das Quellbild oder passen Sie Glättung und Vereinfachung an.

Bild in SVG konvertieren

Verwenden Sie Converter.ConvertImageToSVG(), wenn Sie eine Bilddatei oder einen Bildstream direkt in eine SVG-Datei konvertieren möchten. Verwenden Sie ImageVectorizer.Vectorize(), wenn Ihr Code das vektorisierte Ergebnis vor dem Speichern, Bearbeiten oder Prüfen als SVGDocument benötigt. Dieser Artikel konzentriert sich auf den direkten Konvertierungsworkflow.

Das folgende Beispiel zeigt, wie ein Rasterbild im PNG-Format mit ConvertImageToSVG() in SVG konvertiert wird:

Fügen Sie die folgenden Namespaces hinzu:

1using Aspose.Svg;
2using System.IO;
3using Aspose.Svg.Converters;
4using Aspose.Svg.ImageVectorization;

C# code for image to SVG conversion:

 1// Convert a raster image to SVG in C# using ConvertImageToSVG()
 2
 3// Prepare paths for a source image file and output SVG file
 4string imageFile = Path.Combine(DataDir, "flower-pink.png");
 5string outputFile = Path.Combine(OutputDir, "flower-pink.svg");
 6
 7// Create a configuration object
 8ImageVectorizerConfiguration configuration = new ImageVectorizerConfiguration
 9{
10    PathBuilder =
11                new BezierPathBuilder
12                {
13                    TraceSmoother = new ImageTraceSmoother(3),
14                    ErrorThreshold = 5,
15                    MaxIterations = 5
16                },
17    ColorsLimit = 15,
18    LineWidth = 2
19};
20
21// Convert Image to SVG
22Converter.ConvertImageToSVG(configuration, imageFile, outputFile);

Die Abbildung zeigt das Ergebnis der Bildvektorisierung: a) ursprüngliches PNG-Bild; b) erzeugtes SVG:

Ergebnis der Konvertierung eines Bildes in SVG – ursprüngliches PNG-Bild und erzeugtes SVG

Wichtige Vektorisierungsoptionen

Verwenden Sie ImageVectorizerConfiguration und Path-Builder-Einstellungen, um Detailgrad, Pfadglätte, Dateigröße und Verarbeitungszeit auszubalancieren.

ZielOption prüfenErgebnis
SVG-Dateigröße reduzierenColorsLimit, Vereinfachung der NachzeichnungWeniger Farben und weniger Pfadpunkte.
Stärke der nachgezeichneten Linien steuernLineWidthDickere oder dünnere erzeugte Vektorstriche.
Gezackte Kanten glättenTraceSmoother in BezierPathBuilderSauberere Kurven bei verrauschten oder niedrig aufgelösten Bildern.
Mehr Details erhaltenErrorThreshold, MaxIterationsGenauere Pfade, aber möglicherweise größere SVG-Ausgabe.
Stencil-ähnliches Ergebnis erzeugenStencil-KonfigurationVereinfachte, kontrastreiche Vektorausgabe.

Bild aus Stream in SVG konvertieren

Aspose.SVG for .NET unterstützt dateibasierte und streambasierte Workflows. Das ist praktisch für Desktop-, Web- und Service-Anwendungen. Das folgende Beispiel zeigt, wie ConvertImageToSVG(configuration, inputStream, outputFile) für die Konvertierung von JPG in SVG verwendet wird:

 1// Convert a raster JPG stream to vector SVG in C#
 2
 3// Prepare input and output
 4string imagePath = Path.Combine(DataDir, "tulip.jpg");
 5string outputFile = Path.Combine(OutputDir, "tulip.svg");
 6
 7// Open the image as a FileStream
 8using (FileStream inputStream = new FileStream(imagePath, FileMode.Open, FileAccess.Read))
 9{
10    // Create vectorization configuration
11    ImageVectorizerConfiguration configuration = new ImageVectorizerConfiguration
12    {
13        PathBuilder = new BezierPathBuilder
14        {
15            TraceSmoother = new ImageTraceSmoother(1),
16            ErrorThreshold = 10,
17            MaxIterations = 1
18        },
19        ColorsLimit = 30,
20        LineWidth = 1
21    };
22
23    // Perform conversion from image stream to SVG
24    Converter.ConvertImageToSVG(configuration, inputStream, outputFile);
25}
26
27Console.WriteLine("Image converted to SVG successfully.");

Die Abbildung zeigt das Ergebnis der Bildvektorisierung: a) ursprüngliches JPG-Bild; b) erzeugtes SVG:

Ergebnis der Konvertierung eines Bildes in SVG – ursprüngliches JPG-Bild und erzeugtes SVG

Häufige Fehler und Lösungen

ProblemHäufige UrsacheLösung
Ausgabe-SVG ist sehr großDas Quellbild enthält zu viele Farben, Rauschen oder fotografische DetailsVerwenden Sie einfachere Ausgangsgrafik, reduzieren Sie ColorsLimit, verkleinern Sie das Bild oder nutzen Sie Pfadvereinfachung.
Vektorkanten wirken grobDas Quellbild ist niedrig aufgelöst oder verrauschtBereinigen Sie das Bild vor der Konvertierung und erhöhen Sie die Glättung mit TraceSmoother.
Farben sind zu stark vereinfachtFarbquantisierung ist zu aggressivErhöhen Sie ColorsLimit oder verwenden Sie ein saubereres Quellbild mit klareren Farbbereichen.
Text im Bild wird nicht zu editierbarem SVG-TextBildvektorisierung zeichnet Pixel als Formen nachVerwenden Sie echten SVG-Text, wenn editierbarer Text erforderlich ist. Siehe SVG Text und Textvektorisierung.

FAQ

Kann ich PNG in SVG in C# konvertieren?
Ja. Verwenden Sie Converter.ConvertImageToSVG() für die direkte Konvertierung von PNG in SVG. Einen PNG-spezifischen Workflow mit ImageVectorizer finden Sie unter PNG in SVG in C# konvertieren.

Kann ich einen hochgeladenen Bildstream in SVG konvertieren?
Ja. Verwenden Sie die Stream-Überladung ConvertImageToSVG(configuration, inputStream, outputFile), wenn das Eingabebild aus Upload, Speicherpuffer oder Cloud-Speicher stammt.

Sollte ich Fotos in SVG vektorisieren?
Meist nur dann, wenn Sie bewusst einen stilisierten Vektoreffekt möchten. Fotos erzeugen häufig große SVG-Dateien mit vielen Pfaden, daher sind Rasterformate für fotografische Inhalte oft besser geeignet.

Erzeugt die Konvertierung von Bild in SVG editierbaren Text?
Nein. Rasterbild-Vektorisierung zeichnet sichtbare Pixel als Vektorformen nach. Text im Quellbild wird nicht zu editierbarem SVG-<text>-Inhalt.

Wie verkleinere ich das erzeugte SVG?
Verwenden Sie ein saubereres Quellbild, reduzieren Sie die Anzahl der Farben mit ColorsLimit, verkleinern Sie sehr große Eingaben und nutzen Sie Vereinfachungsoptionen, um die Pfadkomplexität zu senken.

Verwandte Ressourcen

Aspose.SVG bietet einen kostenlosen Online Image to SVG Converter, der plattformunabhängig arbeitet und präzise, effiziente Konvertierung ermöglicht. Mit der Anwendung können Sie Optionen anpassen, um ein optimales Ergebnis zu erzielen. Probieren Sie den kostenlosen Image to SVG Converter aus und nutzen Sie die Vorteile von Vektorgrafiken.