Wie konvertiere ich eine PNG in eine SVG-Datei mithilfe von Software?


29

Ich möchte in der Lage sein, chemische SVG-Strukturen (siehe diese Frage ), die mit MarvinSketch erstellt wurden , vollständig zuzuschneiden, und ich denke, ich hätte mir eine Lösung ausgedacht. Ich benutze MarvinSketch, um eine große PNG-Datei zu erstellen, beschneide diese dann mit GIMP und konvertiere die PNG in SVG . Daher würde ich gerne wissen, ob jemand eine kostenlose Software kennt, die ich auf Ubuntu für eine hochwertige PNG-> SVG-Konvertierung installieren kann (ich verwende keine Online-Konverter, da ich immer misstrauisch gegenüber Malware bin).


1
OK, wie würde ein Code dafür aussehen? Ich habe versucht, den Code umzukehren, wie Sie sagten, aus meinem Wissen (ich bin ein Code noob). Dies ist der Code, den ich verwendet habe`#{INKSCAPE_PATH} -z -f #{Guanidine.png} -w #{width} -j -e #{Guanidine.svg}
BH2017

1
Danach cd ~/Documents/Chem Structures/ist das Verzeichnis, in dem sich die Dateien befinden.
BH2017

1
sudo apt-get install imagemagick dann speichere dieses Skript #! / bin / bash während [$ # -gt 0]; mache picture = $ 1 png_file = echo "$picture" | sed 's/\.\w*$/.png/' / usr / bin / convert "$ picture" png: Verschiebe "$ png_file" in ~ / .local / share / nautilus / scripts und denke daran, es ausführbar zu machen, dann klicke mit der rechten Maustaste und scripte dann was auch immer du speicherst dieses script unter
zeitue

1
OK, wie gesagt, ich bin ein Noob, also wirst du das besser erklären müssen, da alles was ich verstandsudo apt-get install imagemagick
BH2017

2
Sie sollten sich jedoch bewusst sein, dass es einen grundlegenden Unterschied zwischen Vektorgrafiken wie SVG und Pixelgrafiken wie PNG gibt. Sobald Sie die Vektorinformationen verloren haben, gibt es keine (verlustfreie) Möglichkeit, sie wiederherzustellen. Selbst wenn Sie PNG in SVG "konvertieren", müssen Sie die Pixelgrafiken (base64-codiert) in eine SVG-Vektorgrafikdatei einbetten. Der convertBefehl ist noch schlimmer: Er platziert für jedes Pixel der Pixelgrafik einen Kreis, was zu sehr großen Dateien führt. Ich würde daher versuchen, die SVG-Datei direkt zu schneiden.
Quelle

Antworten:


24

So Sie suchen , Raster zu Vektor - Grafik - Konverter / Tracer . potrace& autotraceBeide befinden sich im Ubuntu-Repository. Ich selbst habe es potracezuvor versucht, was mit Standardoptionen zu guten Ergebnissen geführt hat. Wie ich mich erinnere, unterstützen beide Tools keine komprimierten Formate als Eingabe, sondern nur Bitmap-Bilder .

Siehe Potrace-Beispiele

Potrace : Dienstprogramm zum Umwandeln von Bitmaps in Vektorgrafiken

potrace ist ein Dienstprogramm zum Verfolgen einer Bitmap, dh zum Umwandeln einer Bitmap in ein glattes, skalierbares Bild. Die Eingabe ist eine Bitmap (PBM-, PGM-, PPM- oder BMP-Format) und die Standardausgabe ist eine gekapselte PostScript-Datei (EPS). Ein typischer Verwendungszweck ist die Erstellung von EPS-Dateien aus gescannten Daten, z. B. Firmen- oder Universitätslogos, handschriftlichen Notizen usw. Das resultierende Bild ist nicht "zackig" wie eine Bitmap, sondern glatt. Es kann dann in beliebiger Auflösung gerendert werden.

Befehl:

potrace -s inputfile

AutoTrace : Konvertierung von Bitmap in Vektorgrafiken

AutoTrace ist ein Programm zum Konvertieren von Bitmaps in Vektorgrafiken. Ziel des AutoTrace-Projekts ist die Entwicklung einer frei verfügbaren Anwendung, die CorelTrace oder Adobe Streamline ähnelt. In mancher Hinsicht ist es schon besser. Ursprünglich als Plugin für GIMP erstellt, ist AutoTrace jetzt ein eigenständiges Programm.

Befehl:

autotrace -output-format svg inputfile

Verweise:

  • man potrace
  • man autotrace

Aktualisieren


1
Ich lief autotrace -vector svg inputfile(nachdem ich die Eingabedatei in fenfluramine.png geändert hatte) und es funktionierte nicht. Ich änderte auch das Ausgabeformat in svg, was nicht funktionierte. Ich habe es installiert.
BH2017

1
Ich lief potrace -s inputfile(mit der Eingabedatei ist wieder fenfluramine.png) und es gab mir diesen Fehler:potrace: /home/fusion809/Documents/Chem Structures/Fenfluramine.png: file format not recognized Possible input file formats are: pnm (pbm, pgm, ppm), bmp.
BH2017

1
@ BrentonHorne, Sie sollten PNM- oder BMP-Image anstelle von PNG erstellen. Beide Tools unterstützen keine komprimierten Formate als Eingabe (PNG, JPEG ...), sondern nur Bitmap- Bilder (PNM, BMP, ...). Wenn Sie kein anderes als PNG exportieren können, konvertieren Sie es zunächst in BMP.
user.dz

1
Na dann hast du meine Frage nicht beantwortet. MarvinSketch kann nach BMP exportieren, aber sein Hintergrund ist nicht transparent , weshalb ich zuerst das Format PNG vorgeschlagen habe. PNM ist nicht möglich.
BH2017

2
Aha, es hat funktioniert. Vielen Dank. Ich dachte, da der BMP nicht transparent ist, wäre kein Ergebnis zu hoch.
BH2017

19

Inkscape hat ein großartiges Auto-Tracing-Tool.

  1. Installieren Sie Inkscape mit sudo apt-get install inkscape
  2. Importieren Sie Ihr Bild
  3. Wählen Sie Ihr Bild
  4. Wählen Sie in der Menüleiste Path -> Trace Bitmap Item
  5. Passen Sie die Verfolgungsparameter nach Bedarf an

Weitere Informationen finden Sie in der Anleitung zur Ablaufverfolgung .

Sobald Sie mit den Verfolgungsoptionen vertraut sind. Sie können es mithilfe der CLI von Inkscape automatisieren .


5
+1, Danke. Es freut mich zu hören, dass Inkscape potraceFunktionen in die Benutzeroberfläche integriert hat, wie in der von Ihnen erwähnten Referenz angegeben.
user.dz

5
Dies ist die richtige Antwort, da Potrace den .png-Import nicht unterstützt und es bei Konvertierungen leicht zu Schwierigkeiten mit der Transparenz usw. kommt.
brianlmerritt

1
Auch Gimp ist in der Lage, Farbbilder zu verfolgen, was Potrace zu vermissen scheint.
Grinsen

8

Verwenden Sie den convertBefehl im Terminal:

Beispielsweise : convert EXAMPLE.png EXAMPLE.svg

Hier sind einige Informationen aus der Manpage:

convert(1) - Linux man page

Name

convert - convert between image formats as well as resize an image, blur, crop, despeckle, dither, draw on, flip, join, re-sample, and much more.

Synopsis

convert [input-options] input-file [output-options] output-file


3
Dadurch wird ein Rasterbild in die SVG-Datei eingebettet, anstatt es in ein Vektorbild umzuwandeln.
bk138

1
Vielen Dank ... das ist genau das, wonach ich gesucht habe ...
Dan Ortega

2

Ich habe gerade Gimp mit erstaunlichen Ergebnissen verwendet. Ich habe zuerst Potrace verwendet, aber alles, was ich bekam, war ein Bild ganz in Schwarz mit viel Verzerrung. Vielleicht habe ich es nicht richtig benutzt, aber als ich es mit gimp versucht habe, nur als "eps" (file_name.eps) zu exportieren, war alles erledigt. Alles, was ich tun musste, war es zu überprüfen, die Auflösung auf einen Wert von 300 einzustellen. Das war's.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.