Ich habe eine Reihe von SVG-Symbolen, die ich verwenden möchte, damit meine Anwendung in VB.Net 2010 entwickelt wird. Da SVG-Symbole nicht unterstützt werden, muss ich diese Symbole mit Vorzug in PNG oder ICO konvertieren Ausgabeauflösung. Ich habe ein solches Kommandozeilen-Tool für Ubuntu genannt gefunden rsvgconvert
. Haben wir ein solches Tool auch für Windows?
command-line
conversion
icons
svg
Kushal
quelle
quelle
apt install imagemagick
ImageMagick sollte nicht sofort mit einer Stapelverarbeitung von Bildern verknüpft werden. Insbesondere in diesem Fall ist ImageMagick eine schlechte Lösung für die SVG-Konvertierung.
Versuchen Sie es besser mit Inkscape auf der Kommandozeile:
inkscape in.svg --export-png=out.png
quelle
-z
Option zu verwenden.Die Befehlszeile funktionierte nicht sofort und ich wollte, dass 100 Dateien konvertiert werden. So habe ich es mit Windows 7 gemacht:
Installieren Sie Inkscape - nicht das tragbare!
Kopieren Sie alle Ihre SVG-Dateien in einen Ordner, zB "C: \ svgs \" dort:
Sie erstellen eine
convert.bat
Datei mit dieser Zeile in:(zeigen Sie auf den richtigen Ordner Ihrer Installation):
Öffne das CMD als Admin! Drücken Sie dazu die WIN-Taste, geben Sie cmd ein, klicken Sie mit der rechten Maustaste auf "cmd.exe" und wählen Sie "Als Administrator ausführen".
Navigieren Sie zu Ihrem "C: \ svgs \" und geben Sie ein
convert.bat
- Alle svg-Dateien werden in PNGs konvertiert.Verwenden Sie den Windows Explorer, um nach den konvertierten PNG-Dateien zu suchen. Auf meinem PC befanden sie sich im Ordner:
C:\Users\myname\AppData\Local\VirtualStore\Program Files (x86)\Inkscape\svgs
Ich hoffe, das hilft.
Da die Auflösung für die Befehlszeile nur so weit wie möglich festgelegt werden konnte, habe ich das InkscapeBatch-Tool verwendet . Dort könnte ich die DPI so einstellen, dass alle Bilder relativ vergrößert werden.
Sie müssen die richtigen Einstellungen angeben, sonst funktioniert es nicht. Folgendes habe ich getan:
Nachdem Sie auf "Fertig stellen" geklickt haben, müssen Sie in der Symbolleiste auf die Schaltfläche "Stapelkonverter starten ..." klicken:
quelle
%%A
(als Eingabedateiname). Warum sollte es nur im Admin-Modus funktionieren?--export-dpi=100
wobei 100 der Wert von dpi istInkscapeBatch erledigt den Job unter Windows. Benötigt Inkscape .
quelle
Für die Konvertierung von SVG in PNG fand ich, dass cairosvg ( https://cairosvg.org/ ) eine bessere Leistung als ImageMagick erbringt. Installations- und Ausführungsschritte für alle Dateien in Ihrem Verzeichnis.
Öffnen Sie eine Python-Shell in dem Verzeichnis, das Ihre .svg-Dateien enthält, und führen Sie Folgendes aus:
Dadurch wird auch sichergestellt, dass Sie Ihre ursprünglichen .svg-Dateien nicht überschreiben, sondern den gleichen Namen behalten. Sie können dann alle Ihre PNG-Dateien in ein anderes Verzeichnis verschieben:
quelle
Nachdem ich fast 2 Stunden damit gerungen hatte, entschied ich mich für Inkscape. Da ich eine Reihe von Dateien in vielen verschiedenen Auflösungen stapelweise konvertieren musste, habe ich ein Powershell-Skript erstellt. Bei 106 SVGs ist mein Computer für ca. 5 Sekunden eingefroren. Seien Sie also vorsichtig, wenn Sie diese verwenden.
quelle
Sie können Folgendes in Bash / Ubuntu für Windows in dem Ordner verwenden, in dem sich die SVGs befinden. Es scheint jedoch, dass ImageMagick zuerst rastert und dann die Größe ändert, was zu seltsamen Artefakten führt.
find -name "*.svg" -exec convert {} -background none -density 300 -resize 256x256 -define icon:auto-resize -alpha remove -colors 256 {}.ico \;
Siehe auch die Inscape-basierte Lösung, die anscheinend gut funktioniert (von einem anderen Thread, Link verloren):
mkdir temp; declare -a res=(16 24 32 48 64 128 256); for f in *.svg; do for r in "${res[@]}"; do inkscape -z -e temp/${f}${r}.png -w $r -h $r $f; done; resm=( "${res[@]/#/temp/$f}" ); resm=( "${resm[@]/%/.png}" ); convert "${resm[@]}" ${f%%.*}.ico; done; rm -rf temp;
quelle
find -name "*.svg" -exec inkscape {} -e {}.png \;
Obwohl ich diese Version bevorzuge:ls | grep ".svg" | xargs -I file inkscape file -e file.png
Da die Dateien alphabetisch verarbeitet werden, ist dies bei Verwendung vonfind
ImageMagick ist für Windows verfügbar und kann unter anderem zwischen SVG und PNG und ICO konvertieren. Sie können die Größe und andere Attribute für die Ausgabedatei festlegen.
quelle
Ich konnte keinen einzigen Befehl finden, der zum Ausführen eines Stapels verwendet werden konnte, sodass ich eine Dateiliste und eine Reihe von Befehlen erstellen konnte. Diese Anweisungen sollten für alle Windows-Versionen funktionieren. Alle Schreibanweisungen schließen Zitate aus und schließen alles dazwischen ein.
Dazu benötigen Sie Inkscape, MS Excel oder einen vergleichbaren Tabelleneditor und einen Listengenerator. Hier gibt es einen tollen kleinen Freeware-Listengenerator: https://www.portablefreeware.com/?id=1171
Wenn Sie dies richtig gemacht haben, sollten Sie für jeden Dateinamen eine Zeile haben, die so aussieht: | inkscape C: \ SVG \ | Dateiname1.svg | --export-png = C: \ PNG \ | Dateiname1.png |
Hoffe, dass jemand das Leben leichter macht. James
quelle
Kais Antwort ist nah, hat aber bei mir nicht funktioniert. Mit ein paar kleinen Änderungen funktionierte dies jedoch beim ersten Mal einwandfrei:
convert.bat
convert.bat
in Ihrem bevorzugten Text- / Code-Editor und geben Sie Folgendes ein:FOR %%A IN (*.svg) DO "C:\Program Files\Inkscape\inkscape.exe" %%A --export-png=%%A.png
(Beachten Sie, dass der
inkscape.exe
Speicherort mit dem Speicherort des ausführbaren Programms auf Ihrem PC übereinstimmen sollte. Der zweite zuvor--export-png
ist%%A
- das ist die SVG-Datei, die konvertiert wird.)convert.bat
um es auszuführen, und es sollte die Ergebnisse der Konvertierungen wiedergeben.Beachten Sie, dass Sie möglicherweise Ihren Windows-Ordner aktualisieren müssen, um die neuen Dateien anzuzeigen. Sie sollten jedoch alle am selben Speicherort wie die ursprünglichen SVGs erstellt worden sein.
quelle
Konnte aus irgendeinem Grund weder imagemagick noch inkscape dazu bringen, für mich zu arbeiten. Ich hatte nur 12 Dateien zum Konvertieren, habe diese Seite nur manuell verwendet: http://svgtopng.com/ hat eine Freude gemacht.
quelle
Hier ist eine ImageMagick-basierte Lösung, um alle SVG-Dateien in einem bestimmten Verzeichnis in ICO-Dateien zu konvertieren:
Erläuterung:
mogrify
: Wieconvert
, aber Sie können mehrere Dateien stapelweise verarbeiten.-format ico
: Unser Zieldateiformat. Erstellt.ico
Dateien, anstatt die Originaldatei zu überschreiben (wie es mogrify standardmäßig tun würde).-density 1200
: Da wir keine Zielpixelgröße angeben können, auf die ImageMagick das SVG rastern soll (es würde zuerst mit einer Standarddichte rastern und dann skalieren), rastern wir das SVG mit einer wahnsinnig hohen Auflösung (1200 dpi), um sicherzustellen, dass das Bild angezeigt wird wird verkleinerter zu 256x256 statt Upscaling.-background transparent
: Der Hintergrund wird transparent dargestellt.-trim
: Vorhandenen Rand um das Bild entfernen.-resize 256x256
: Skalieren Sie das Bild so, dass die längste Seite 256 Pixel hat und das Seitenverhältnis beibehalten wird.-gravity center -extent 256x256
: Vergrößern Sie die Leinwand, und achten Sie darauf, dass die kurze Seite ebenfalls 256 Pixel hat. Das vorhandene Bild ist zentriert. Dies ist notwendig, da wir ein quadratisches Bild als Grundlage für eine ICO-Datei benötigen.-define icon:auto-resize
: Nehmen Sie nicht nur das 256x256-Bild, sondern auch alle empfohlenen verkleinerten Auflösungen (z. B. 32x32) in die ICO-Datei auf.quelle