Vektorisieren von Bildern – Beispiele für Python-Code

Dieser Artikel führt Sie in die Grundlagen der Vektorisierung von Bildern mithilfe der Python-Bibliothek Aspose.SVG ein. Der Artikel geht durch mehrere Python-Beispiele, die die Funktionalität von ImageVectorization und die Auswirkungen von Konfigurationseigenschaften auf das Ergebnis der Vektorisierung demonstrieren.

Rasterbild vs. Vektorgrafik

Es gibt zwei Haupttypen von Bildern: Vektor- und Rasterbilder. Die Wahl zwischen ihnen hängt vom konkreten Anwendungsfall ab. Eine Bitmap, auch Rasterbild genannt, ist ein zweidimensionales Array, das Farben einzelnen Pixeln zuordnet. Rasterbilder haben in der Regel eine viel größere Dateigröße als Vektorbilder und eignen sich gut für Fotos oder Bilder mit Farbverläufen. Ein wesentlicher Nachteil von Rasterbildern ist jedoch der Qualitätsverlust bei der Skalierung, der zu Pixelbildung und Unschärfe führt.

Vektorgrafiken hingegen bestehen aus geometrischen Formen wie Bézier-Kurven, Splines und Linien. Diese Formen werden durch mathematische Gleichungen bestimmt, sodass Vektorbilder ohne Qualitätsverlust unbegrenzt skaliert werden können. Dadurch eignen sich Vektorgrafiken ideal für Logos, Symbole, Seitenlayouts, Karten, Grafiken, Strichzeichnungen und Illustrationen. Sie führen häufig zu kleineren Dateigrößen als Rasterbilder, insbesondere bei einfacheren Projekten.

Vektorisieren von Bildern

Bei der Bildvektorisierung handelt es sich um den Prozess der Umwandlung eines Rasterbilds in Vektorgrafiken. Dabei werden die Pixelinformationen eines Rasterbilds in eine Reihe mathematischer Kurven und Formen umgewandelt. Zu den Vorteilen von Vektorbildern gehören ihre Skalierbarkeit und typischerweise kleinere Dateigrößen für bestimmte Bildtypen. Allerdings sind Vektorbilder möglicherweise weniger effektiv für sehr detaillierte Bilder oder Fotos, die komplexe Farbvariationen und -verläufe erfordern.

Aspose.SVG for Python via .NET bietet eine robuste Lösung für die Vektorisierung von Bildern über den Namespace ImageVectorization. Dadurch können Benutzer verschiedene Rasterbildformate wie JPG, PNG, BMP, TIFF und GIF in das Vektor-SVG-Dateiformat konvertieren. Der Vektorisierungsprozess kann mithilfe von Konfigurationseigenschaften wie path_builder, colors_limit, error_threshold, trace_smoother, max_iterations, stencil usw. fein abgestimmt werden, die sich auf die Qualität und Detailgenauigkeit der resultierenden Vektorgrafiken auswirken . Diese Technologie ermöglicht eine präzise Steuerung des Vektorisierungsprozesses und gewährleistet so eine hohe Qualität und Skalierbarkeit von Vektorbildern.

Python-Beispiel 1. Bildvektorisierung

Um ein Bild mit der Python-Bibliothek Aspose.SVG zu vektorisieren, sollten Sie einige Schritte befolgen:

  1. Erstellen Sie eine Instanz der Klasse BezierPathBuilder, um die Pfaderstellungsstrategie zu definieren. Hier können Sie die Eigenschaften von BezierPathBuilder festlegen, z. B. trace_smoother, error_threshold und max_iterations.
  2. Erstellen Sie eine Instanz der Klasse ImageVectorizer. Der ImageVectorizer ist die Hauptklasse zum Konvertieren von Bildern in Vektorgrafiken.
    • Weisen Sie die path_builder-Konfiguration (zuvor definiert) dem vectorizer-Objekt zu. Das bedeutet, dass der Vektorisierer die im path_builder angegebenen Einstellungen für die Pfaderstellung und -optimierung verwendet.
    • Legen Sie die Eigenschaften colors_limit und line_width der Klasse ImageVectorizerConfiguration fest.
  3. Verwenden Sie die Methode vectorize(), um ein Bild aus der angegebenen Datei zu vektorisieren.
  4. Speichern Sie das vektorisierte Bild als SVG-Datei mit der Methode save der Klasse SVGDocument.
 1import os
 2from aspose.svg import *
 3from aspose.svg.converters import *
 4from aspose.svg.drawing import *
 5from aspose.svg.rendering.image import *
 6from aspose.svg.imagevectorization import *
 7
 8# Setup directories
 9input_folder = "data/"
10output_folder = "output/"
11src_file = "fish.png"
12output_file = "fish-vectorized.svg"
13if not os.path.exists(output_folder):
14    os.makedirs(output_folder)
15
16# Configuration for vectorization
17path_builder = BezierPathBuilder()
18path_builder.trace_smoother = ImageTraceSmoother(3)
19path_builder.error_threshold = 10.0
20path_builder.max_iterations = 20
21
22vectorizer = ImageVectorizer()
23vectorizer.configuration.path_builder = path_builder
24vectorizer.configuration.colors_limit = 3
25vectorizer.configuration.line_width = 1.5
26
27# Vectorize an image
28with vectorizer.vectorize(os.path.join(input_folder, src_file)) as document:
29    output_file = os.path.join(output_folder, output_file)
30    document.save(output_file)

Mit diesem Codebeispiel können Sie ein Farbrasterbild in ein Vektorbild vektorisieren. Die Vektorisierungsoptionen werden so ausgewählt, dass das in Abbildung (b) dargestellte gewünschte Ergebnis erzielt wird. Wir wollten ein vereinfachtes dreifarbiges Bild des Originals. Die folgende Abbildung zeigt das Quellbild (a) und das vektorisierte Bild unter Verwendung des obigen Python-Codeausschnitts (b).

Text „Quellbild und vektorisiertes Bild“

Vektorisierungsoptionen

Sie können benutzerdefinierte Einstellungen anwenden, um das beste Ergebnis bei der Bildvektorisierung zu erzielen. Nachfolgend finden Sie einige der wichtigsten Einstellungen, die Sie steuern können, zusammen mit ihren Standardwerten:

Python-Beispiel 2. Fotovektorisierung

Ist es möglich, ein Foto im Vektorformat so zu konvertieren, dass es genauso aussieht wie das Foto?

SVG eignet sich nicht gut zum Zeichnen fotorealistischer Bilder. Bei Vektorbildern sind noch keine natürlichen Farbübergänge möglich. Vektorgrafiken eignen sich am besten zum Erstellen von Logos, Illustrationen und technischen Zeichnungen. Es ist nicht das am besten geeignete Format für Halbtonbilder mit Farbmischungen oder zum Bearbeiten von Fotos. Durch die Vektorisierung von Fotos können jedoch beeindruckende künstlerische Effekte erzielt werden, die interessant und nützlich sein können.

In diesem Abschnitt konvertieren wir ein Foto in das Vektorformat und versuchen, Vektorisierungsoptionen so auszuwählen, dass das Ergebnis mit dem Foto identisch aussieht:

 1import os
 2from aspose.svg import *
 3from aspose.svg.converters import *
 4from aspose.svg.drawing import *
 5from aspose.svg.rendering.image import *
 6from aspose.svg.imagevectorization import *
 7
 8# Setup directories
 9input_folder = "data/"
10output_folder = "output/"
11src_file = "lioness.jpg"
12output_file = "lioness.svg"
13if not os.path.exists(output_folder):
14    os.makedirs(output_folder)
15
16# Configuration for vectorization
17path_builder = BezierPathBuilder()
18path_builder.trace_smoother = ImageTraceSmoother(1)
19path_builder.error_threshold = 30.0
20path_builder.max_iterations = 30
21
22vectorizer = ImageVectorizer()
23vectorizer.configuration.path_builder = path_builder
24vectorizer.configuration.colors_limit = 25
25vectorizer.configuration.line_width = 1.5
26
27# Vectorize a photo
28with vectorizer.vectorize(os.path.join(input_folder, src_file)) as document:
29    output_file = os.path.join(output_folder, output_file)
30    document.save(output_file)

Die Abbildung zeigt das Quellfoto (a), das vektorisierte Bild mithilfe des Python-Codeausschnitts (b).

Text „Quellenfoto und vektorisiertes Foto“

Wie oben erwähnt, ist SVG nicht das am besten geeignete Format für Halbtonbilder mit Farbmischungen usw. Der Vektorisierungsprozess nutzt die Quantisierung von Farbbildern. Alle kleinen gleichfarbigen Punkte oder Pixel ersetzen wir durch geometrische Formen oder Kurven. Das Quellfoto (a) und die resultierende SVG-Datei (b) können Sie finden und im Detail ansehen, indem Sie den Links folgen – lioness.jpg, lioness.svg.

Lizenzbeschränkungen

Eine kostenlose Testversion von Aspose.SVG for Python via .NET bietet alle Funktionen für die Bildvektorisierung mit Ausnahme der folgenden:

Wenn Sie Aspose.SVG for Python via .NET ohne Evaluierungseinschränkungen testen möchten, fordern Sie eine 30-tägige temporäre Lizenz an. Weitere Informationen finden Sie unter Wie bekomme ich eine temporäre Lizenz?

Die Abbildung zeigt das Ergebnis der Foto-zu-Vektor-Konvertierung ohne Anwendung einer Lizenz.

Text „Fotovektorisierungsergebnis ohne Verwendung einer Lizenz“

Siehe auch

Aspose.SVG bietet einen kostenlosen Online- Bild-Vektorisierer an, mit dem Bitmap-Bilder wie JPG, PNG, BMP, TIFF und GIF in Vektorgrafiken konvertiert werden können. Nach der Konvertierung werden alle Vektorgrafikelemente als SVG-Dateien gespeichert. Unser kostenloser Vektorisierer funktioniert auf jeder Plattform. Mit dieser App können Sie verschiedene Optionen anwenden, um das perfekte Ergebnis zu erzielen. Sparen Sie Zeit und erleben Sie die Vorteile von Vektorgrafiken mit unserem kostenlosen Image Vectorizer!

Text “Bild-Vektorisierer”

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.