Ein Befehlszeilentool zum Vereinfachen von SVG-Dateien

Wie kann ich SVG-Dateien (alle darin enthaltenen Pfade) mit einem Windows-Befehlszeilentool vereinfachen? Es ist wichtig, dass es schnell ist, weil ich es in der Produktion verwenden sollte.
Adobe Illustrator hat einen guten Vereinfacher (Objekt->Pfad->Vereinfachen), kann aber nicht als CLI verwendet werden. https://github.com/mourner/simplify-js ist ein weiteres gutes Tool, aber es hat keine CLI.
Bitte kommentieren Sie diese Frage, wenn Sie ein Nicht-CLI-Tool (in beliebigen Sprachen einschließlich C++ und Python) kennen, das direkt mit SVG-Dateien arbeitet.

Ihr letzter Satz sollte eine separate Frage sein (Bitte stellen Sie auf SE-Sites nicht zwei Fragen in einer). Sie können beide Fragen aufeinander verweisen lassen, um zu betonen, dass Sie in der einen ein CLI-Tool und in der anderen eine Bibliothek haben möchten.
Wenn Sie programmieren können, wäre es einfach, ein Skript mit AutoIt zu schreiben, um Adobe Illustrator zu automatisieren, um dies für beliebig viele Dateien zu tun

Antworten (4)

Sie könnten node.js installieren und Befehlszeilen-JavaScript zusammen mit SVG Optimizer (SVGO) verwenden, um SVG-Vektorgrafikdateien zu optimieren.

Ich konnte keine Tools zum Vereinfachen von SVG-Pfade in SVGO finden. Bist du sicher, dass es das tut?

Scour ist ein Python-Tool, das redundante und falsche Daten aus SVG-Dateien entfernt und sie dann optimiert.

Installieren

Wenn Sie Debian verwenden, können Sie es installieren, indem Sie diesen Befehl eingeben:

sudo apt install scour

Auf den meisten Plattformen können Sie installieren mit:

pip install scour

Wenn Ihre aktuellen Berechtigungen nicht ausreichen, können Sie entweder Folgendes verwenden:

pip install --user scour

oder

sudo pip install scour

Verwendung

Standard:

scour -i input.svg -o output.svg

Besser (für ältere Versionen von Internet Explorer) :

scour -i input.svg -o output.svg --enable-viewboxing

Maximales Schrubben:

scour -i input.svg -o output.svg --enable-viewboxing --enable-id-stripping \
  --enable-comment-stripping --shorten-ids --indent=none

Maximales Scrubbing und eine komprimierte SVGZ-Datei:

scour -i input.svg -o output.svgz --enable-viewboxing --enable-id-stripping \
  --enable-comment-stripping --shorten-ids --indent=none

Beachten Sie, dass Scour eine Python-Bibliothek ist, die auch ein Befehlszeilentool bereitstellt, indem Einstiegspunkte verwendet werden, sodass eine funktionierende Python (2.7- oder 3.4+-Installation) erforderlich ist - sie ist plattformübergreifend.

Ich konnte in Scour keine Tools zum Vereinfachen von SVG-Pfade finden. Bist du sicher, dass es das tut?
@J.Mando ja, ich bin mir ziemlich sicher, dass es nicht ganz so optimiert wie SVG- Dateien vereinfacht - je nach Herkunft der Datei und den ausgewählten Optionen kann das Speichern sehr erheblich sein.
Ich suche keine Optimierung. Bitte lesen Sie die Frage.
@J.Mando Bitte klären Sie, was Sie mit vereinfachen meinen. Die meisten Optimierungen sind auch Vereinfachungen, da ein einfacheres SVG schneller heruntergeladen, geladen und gerendert wird als ein komplexes und schnelles Herunterladen, Laden und Rendern das Ziel der Optimierung ist - die einzige Definition von Vereinfachung Soweit ich weiß, versucht die Optimierung nicht auch, die Dinge für Menschen lesbarer zu machen, was der Optimierung zuwiderlaufen kann.
Ich denke die Frage ist klar. Ich möchte eine Pfadvereinfachung. Genau wie der in Adobe Illustrator - den ich erwähnt habe.

Es gibt auch svgcleaner .

Zum Zeitpunkt, als ich dies poste, war die neueste Veröffentlichung im April 2018 und der neueste (unveröffentlichte) Commit im November 2019, sodass es immer noch in der aktiven Entwicklung betrachtet werden kann.

Ich weiß nicht, wie es sich funktionsmäßig mit den anderen aufgeführten Dienstprogrammen vergleicht, aber der Hauptvorteil, den ich in diesem Dienstprogramm sehe, ist, dass es in einer echten Programmiersprache (Rust) geschrieben ist, anstatt in irgendeiner Skript-Rimgarole wie Javascript oder Python.

Eine Funktion, von der ich bereits weiß, dass sie nicht vorhanden ist, ist die Möglichkeit, eine Teilmenge der ursprünglichen SVG-Datei zum Exportieren auszuwählen.

svgcleaner enthält Builds für Linux, Windows und Macos.

https://github.com/RazrFalcon/svgcleaner/releases

Wenn Sie Inkscape bereits installiert haben, können Sie es als Befehlszeilenprogramm verwenden.

Geben inkscape --helpSie Anweisungen ein.

Inkscape enthält die Python-Laufzeit und verwendet Scour (in einer anderen Antwort erwähnt), um diese Befehlszeilenoperationen auszuführen.