Wie konvertiert man ein SVG zu einem PNG mit Image Magick?
Ich habe eine SVG-Datei, die eine definierte Größe von 16x16. Wenn ich Image Magick ' s convert-Programm zu konvertieren es in ein PNG-dann bekomme ich eine 16x16-pixel-PNG, die ist viel zu klein:
convert test.svg test.png
Ich brauche, geben Sie die pixel-Größe der Ausgabe PNG. -size
parameter scheint ignoriert zu werden, -scale
parameter skaliert das PNG nach es hat gewesen umgewandelt zu PNG. Das beste Resultat bis jetzt habe ich mithilfe der -density
parameter:
convert -density 1200 test.svg test.png
Aber ich bin nicht zufrieden, weil ich wollen, geben Sie die Ausgabegröße in Pixeln an, ohne dabei Mathematik zu berechnen, die Dichte Wert. Deshalb möchte ich etwas wie das hier tun:
convert -setTheOutputSizeOfThePng 1024x1024 test.svg test.png
Also, was ist die Magie parameter muss ich hier benutzen?
InformationsquelleAutor der Frage kayahr | 2012-03-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich habe nicht in der Lage, gute Ergebnisse zu bekommen von ImageMagick in diesem Beispiel, aber Inkscape ist eine schöne Aufgabe, es auf Linux und Windows:
Hier ist das Ergebnis der Skalierung eine 16 x 16 SVG auf ein 200x200 Pixel großes PNG mit diesem Befehl:
Nur als Referenz, meine Inkscape version (auf Ubuntu 12.04):
und auf Windows 7 ist es:
InformationsquelleAutor der Antwort 808sound
Versuchen svgexport:
svgexport ist eine einfache cross-platform command-line-tool, das ich gemacht habe für das exportieren von svg-Dateien in jpg und png, siehe hier für mehr Optionen. Installieren svgexport npm installierendann ausführen:
Bearbeiten: Wenn Sie ein Problem mit der Bibliothek, bitte Einreichen auf GitHub, danke!
InformationsquelleAutor der Antwort Ali Shakiba
Dies ist nicht perfekt, aber es macht den job.
Grundsätzlich erhöht es die DPI hoch genug ist (verwenden Sie einfach einen ausgebildete/safe Vermutung), dass die Größenanpassung erfolgt mit angemessener Qualität. Ich war auf der Suche nach einer passenden Lösung, um diese aber nach einer Weile beschlossen, das war gut genug für meinen aktuellen Bedarf.
InformationsquelleAutor der Antwort Hardev
Wenn Sie auf MacOS X und Probleme mit Imagemagick konvertieren, können Sie versuchen, es erneut zu installieren mit RSVG lib.
Mit HomeBrew:
Stellen Sie sicher, dass es richtig delegieren:
Anzeigen soll
rsvg
.InformationsquelleAutor der Antwort Jose Alban
Inkscape scheint nicht zu funktionieren, wenn svg-Einheiten sind nicht
px
(z.B. cm). Ich habe ein leeres Bild. Vielleicht, es könnte behoben werden, indem Anpassungen der dpi-Wert, aber es war zu lästig.Svgexport ist ein node.js Programm und damit in aller Regel nicht sinnvoll.
'Imagemagick' s convert funktioniert mit:
Wenn Sie
-resize
das Bild ist unscharf und die Datei ist viel größer.BESTEN
Es ist am schnellsten, hat die wenigsten Abhängigkeiten, und der Ausgang ist über 30% kleiner als konvertieren. Install librsvg2-bin um es zu bekommen. Es scheint nicht, ein Mensch zu sein-Seite, aber Sie können geben Sie:
bekommen etwas Unterstützung. Einfach ist gut.
InformationsquelleAutor der Antwort september_converter
Nachdem Sie die Schritte in Jose Alban ' s Antwortich war in der Lage, ImageMagick funktioniert alles wunderbar mit dem folgenden Befehl:
Die Zahl 1536 stammt aus eine grobe Schätzung der Dichte, siehe diese Antwort für weitere Informationen.
InformationsquelleAutor der Antwort Ian
Um skalieren Sie das Bild, die option-Dichte verwendet werden soll. Soweit ich weiß, die standard-Dichte ist 72 und Karten der Größe 1:1. Wenn Sie möchten, dass die Ausgabe von png zu werden als doppelt so groß wie die original-svg-set die Dichte von 72*2=144
konvertieren -Dichte 144 Quelle.svg-Ziel.png
InformationsquelleAutor der Antwort Stanislav Schmidt
warum nicht Sie geben einen versuchen, inkscape command line, das ist meine bat-Datei zu konvertieren alle svg in dieser dir zu png:
InformationsquelleAutor der Antwort ampecs
Eine Sache, die nur mich etwas Einstellung war, die
-density
NACHDEM die input-Datei-name. Das hat nicht funktioniert. Bewegen Sie auf die erste option, die in der konvertieren (vor allem anderen) hat es funktioniert (für mich, YMMV, usw.).InformationsquelleAutor der Antwort Nick
Kam ich zu diesem post, aber ich wollte nur, um die Konvertierung von batch-und schnell ohne die Verwendung von Parametern (aufgrund von mehreren Dateien mit unterschiedlichen Größen).
Für mich waren die Anforderungen wohl etwas einfacher als für den ursprünglichen Autor. (Wollte SVGs in MS PowerPoint, aber es nicht zulassen)
InformationsquelleAutor der Antwort Qohelet
Ich habe dieses Problem gelöst durch ändern der
width
undheight
Attribute der<svg>
tag an meinem bestimmt Ausgabegröße und dann konvertieren mit ImageMagick. Funktioniert wie ein Charme.Hier mein Python-code eine Funktion zurückgeben, die JPG-Datei den Inhalt:
InformationsquelleAutor der Antwort Yanone
Die top-Antwort von @808sound nicht für mich arbeiten. Ich wollte die Größe ändern
und bekam
Anstatt also öffnete ich Inkscape, ging dann zu
File
Export as PNG file
und ein GUI-Feld aufgetaucht, die mir erlaubt, die genauen Maße, die ich brauchte.Version auf
Ubuntu 16.04 Linux
:Inkscape 0.91 (September 2016)
(Dieses Bild ist aus Kenney.nl's asset packs übrigens)
InformationsquelleAutor der Antwort James L.
Für einfache SVG zu PNG-Konvertierung fand ich cairosvg (https://cairosvg.org/) besser abschneidet als ImageMagick. Schritte für die Installation und läuft auf allen SVG-Dateien in Ihrem Verzeichnis.
Öffnen Sie eine python-shell in das Verzeichnis, das enthält Ihre .svg-Dateien und ausführen:
Wird dies auch sicherzustellen, dass Sie nicht überschreiben Ihre ursprünglichen .svg-Dateien, aber halten die gleichen Namen. Dann können Sie verschieben Sie alle Ihre .png-Dateien in ein anderes Verzeichnis mit:
InformationsquelleAutor der Antwort edank