Wie konvertiere ich Bitmaps in SVGs?

13

Ich habe viele Graustufen-Bitmaps, die ich in ein Vektorformat wie SVG konvertieren muss. Ich habe Inkscape verwendet, was zu guten Ergebnissen führt, aber das Öffnen, Konvertieren und Speichern einer Datei dauert ungefähr 10-15 Minuten. Gibt es ein Batch- oder Befehlszeilentool, das diese konvertieren kann?

Dorf
quelle
Vielleicht möchten Sie auch einen Blick darauf werfen potrace.
Stéphane Chazelas
Es ist auch möglich, inkscape als Batchtool- Link zu verwenden

Antworten:

19

Potrace

Ich fand dieses Beispiel auf SO in einer Frage & Antwort mit dem Titel: Wie konvertiere ich ein JPEG-Bild mit ImageMagick in das SVG-Format? . Eine der vorgeschlagenen Antworten potrace.

$ convert input.jpg output.ppm
$ potrace -s output.ppm -o svgout.svg

Ergebnisse

           ss # 1             ss # 2

Wenn potraceSie sich die Website ansehen, können Sie anscheinend direkt von BMP zu SVG wechseln.

$ potrace -s input.bmp -o output.svg

Autotrace

Eine weitere Option potraceist autotrace.

$ autotrace -output-file ouput.svg -output-format svg --color-count 4 input.bmp

Sie müssen wahrscheinlich mit dem spielen --color-count, um ein Bild zu erhalten, das Ihren Bedürfnissen entspricht.

Ergebnisse

                                                 ss # 3

Welches verwenden?

Von diesen 2 hängt es wirklich vom Ausgangsmaterial ab. Wenn Sie Bilder konvertieren, potraceist dies wahrscheinlich die bessere Option. Für Nicht-Fotomaterial wie Schriftarten und leblose Objekte wie Landschaften, die Dinge wie Straßen enthalten, dann autotracemit dem --centerlineSchalter.

Es ist zwar nicht optimal für Fotos, eignet sich jedoch gut für Strichzeichnungen und plakatähnliche Bilder. Kommt mit Farbe nicht gut zurecht. Autotrace bietet einige Funktionen, die im eingebetteten Potrace-Dialogfeld in Inkscape nicht verfügbar sind. Beispielsweise gibt es einen Mittellinienschalter, der besonders nützlich ist, um Straßen (in Karten) oder Schriftzeichen zu verfolgen.

Batch-Konvertierungen

Sie können einen dieser Befehle in eine for-Schleife in Bash einbinden, was die Ausführung von Massenkonvertierungsaufgaben vereinfacht.

$ for i in *.bmp; do <CONVERSION TOOL> ... "$i"; done

Verweise

slm
quelle
Es ist nicht erforderlich, eine Zwischendatei aus dem JPEG-Format zu speichern. Als Einzeiler verwendete ich:convert -channel RGB -compress None input.jpg bmp:- | potrace -s - -o output.svg
Louis Maddox
9

Autotrace

Sie könnten Autotrace versuchen .

Mit dem folgenden Befehl erhalten Sie die folgenden Ergebnisse:

autotrace --output-format svg --output-file output.svg --color-count 4 imgsrc.jpg

Ich musste eine Bildschirmaufnahme der resultierenden SVG machen und als PNG speichern, um die Ausgabe zu zeigen.

Hier ist ein Quellbild jpg:

Schädelquelle

Hier ist das resultierende Bild:

Schädel umwandeln

rking
quelle
7

Normalerweise erledige ich alle Bildbearbeitungsaufgaben mit convertImageMagic, aber ich kann nicht mit svg-Dateien arbeiten. Sie können sich jedoch inkscapevon der Befehlszeile aus bedienen :

for i in *bmp; do inkscape -f "$i" -l "$i.svg"; done

Dadurch werden Dateien erstellt, die aufgerufen werden foo.bmp.svg. Versuchen Sie Folgendes, um die Namen richtig zu machen:

for i in *bmp; do inkscape -f "$i" -l "${i%.bmp}.svg"; done

Das Problem bei diesem Ansatz ist, dass zumindest auf meinem System ein ärgerlicher grafischer Dialog angezeigt wird, in dem gefragt wird, ob ich das Bild verknüpfen oder einbetten möchte:

                                 Bildbeschreibung hier eingeben

Sie müssen also immer noch manuell auf OK klicken, aber es ist immer noch viel schneller als es Datei für Datei zu tun.

Die Ausgabebilder sind, soweit ich das beurteilen kann, identisch:

   Bildbeschreibung hier eingeben


Theoretisch sollten beide convertund rsvg-convertdies in der Lage sein, aber ich konnte es in den wenigen Minuten, die ich damit verbrachte, nicht schaffen, meine Bilder richtig zu bearbeiten. Trotzdem sind sie beide einen Blick wert.

terdon
quelle
Ich bin mir nicht sicher, aber auf der Inkscape-Website steht, dass es jetzt potraceeingebettet ist. Ich frage mich, ob es überhaupt nur dieses Tool verwendet. Zitat: "Potrace ist jetzt in Inkscape eingebettet. Sie müssen es nicht separat ausführen." - wiki.inkscape.org/wiki/index.php/Tools
slm
5
Ich vermute, dass Inkscape das Bitmap-Bild einfach in die SVG-Datei einbettet, daher das identische Aussehen.
user2428118
@ user2428118 Ich vermute, du hast recht. Das kann ein Problem sein oder auch nicht, je nachdem, was genau Sie mit diesen Bildern machen möchten.
Terdon
1

potraceist das Werkzeug dafür. Sie können sie in großen Mengen verarbeiten, aber zuerst müssen Sie die Bilder in Schwarzweiß konvertieren:

ls ./*.jpg | xargs -L1 -I {}  convert -monochrome {} {}.ppm
ls -1 ./*.ppm | xargs -L1 -I {} potrace {} -r 300 -b svg -o {}.svg

Auf Ubuntu installieren:

sudo apt install potrace

Wenn Sie Bilder konvertieren möchten, die nicht einfarbig sind Inkscapeund ein Tracer-Tool auf Potrace-Basis haben, das mehrere Farben unterstützt, konvertiert es zuerst das Bild in Farbebenen, zeichnet diese auf und kombiniert das Ergebnis.

Um den Tracer zu verwenden, laden oder importieren Sie ein Bild, markieren Sie es und wählen Sie das Element Pfad > Bitmap verfolgen oder Shift+ Alt+B.

Sehen

Tutorial hier!

Eduard Florinescu
quelle