Ein SVG hat diese Eigenschaften, die seine Größe bestimmen:
width="146.91299pt"
height="78.079002pt"
viewBox="0 0 146.913 78.079"
Ich möchte eine gegebene SVG auf eine mit von 400pt
per Kommandozeile skalieren , ohne das Seitenverhältnis zu brechen. Dies bedeutet, dass die drei oben genannten Werte korrekt geändert werden müssen und alle Punkte im folgenden SVG-Code. Ich möchte nicht nur die Leinwandgröße ändern, sondern die gesamte SVG-Bildgröße. Und ich möchte es nicht mit einer GUI / von Hand machen, aber ich möchte es mit der CLI machen.
Wie kann ich eine SVG-Datei automatisch über die Befehlszeile auf eine bestimmte Breite skalieren?
Grund: Die Vorschau von Wikipedia sieht schlecht aus, wenn das Bild zu klein ist. Sehen Sie sich dieses Bild als Beispiel an.
Wie würde ich diese Aufgabe mit Inkscape-GUI machen
- Umschalt + Strg + M (Transformieren)
- Skalieren ("Proportional skalieren" ankreuzen)
- Breite eingeben
- Umschalt + Strg + D (Dokumenteigenschaften)
- Seite an Auswahl anpassen
Jetzt möchte ich eine automatische CLI-Methode, um dies zu tun.
Übrigens, inkscape wurde einfach angewendet
<g transform="matrix(1.6838397,0,0,1.6838397,-3.3543029,-3.3542794)"
id="surface0">
zum ganzen Bild.
quelle
width
,height
undviewBox
Werte zu so etwas wiewidth="100%" height="100%" viewBox="0 0 400 212.58569"
.sed
in @ terdons Antwort). Ein Problem, auf das Sie stoßen können, besteht darin, dass die Werte möglicherweise von allen anderen .svg-Dateien abweichen müssen, mit denen Sie dasselbe tun möchten.Antworten:
rsvg-convert
aus demlibrsvg2-bin
paket können svg's in der größe ändern.In dieser Antwort finden Sie ausführliche Anweisungen.
quelle
rsvg-convert -a -w 500 -f svg Vector-triangle-inequality.svg -o Result.svg
hat funktioniert. Aber rsvg-convert scheint mehr zu können als nur die Größe zu ändern.rsvg-convert --help
liefert keine Hinweise.Wenn Sie nur ein Bild ändern möchten, öffnen Sie es in einem Texteditor (z. B. Emacs) und ändern Sie die Breite.
Verwenden Sie für einen geekier CLI-Ansatz sed:
Dadurch wird das Bild jedoch nicht skaliert, sondern nur die Breite eingestellt.
Eine bessere Möglichkeit, die für viele Bilder im Batch-Modus ausgeführt werden kann, ist die Verwendung von inkscape über die Befehlszeile:
Führen Sie für viele Dateien (vorausgesetzt, Sie möchten, dass alle Dateien die gleiche Breite haben) die folgenden Schritte aus. Es erfordert die Konvertierung in PNG und setzt voraus, dass Ihre Dateinamen keine Leerzeichen enthalten:
Der Konverter von ImageMagick war meine erste Wahl, aber er scheint beim Skalieren von SVGs zu scheitern.
quelle