614 Stimmen

Wie konvertiert man ein SVG in ein PNG mit ImageMagick?

Ich habe eine SVG-Datei, die eine definierte Größe von 16x16 hat. Wenn ich das Konvertierungsprogramm von ImageMagick verwende, um sie in ein PNG zu konvertieren, erhalte ich ein PNG mit 16x16 Pixeln, das viel zu klein ist:

convert test.svg test.png

Ich muss die Pixelgröße des ausgegebenen PNGs angeben. -size scheint ignoriert zu werden, -scale Parameter skaliert das PNG nach Es wurde in PNG konvertiert. Das beste Ergebnis habe ich bisher mit der Methode -density Parameter:

convert -density 1200 test.svg test.png

Aber ich bin nicht zufrieden, denn ich möchte die Ausgabegröße in Pixeln angeben, ohne den Dichtewert zu berechnen. Ich möchte also so etwas wie dies tun:

convert -setTheOutputSizeOfThePng 1024x1024 test.svg test.png

Was ist also der magische Parameter, den ich hier verwenden muss?

741voto

808sound Punkte 7586

Mit ImageMagick konnte ich in diesem Fall keine guten Ergebnisse erzielen, aber Inkscape leistet gute Arbeit bei der Skalierung eines SVG unter Linux und Windows:

# Inkscape v1.0+
inkscape -w 1024 -h 1024 input.svg -o output.png

# Inkscape older than v1.0
inkscape -z -w 1024 -h 1024 input.svg -e output.png

Beachten Sie, dass Sie einen der Breiten-/Höhenparameter weglassen können, damit der andere Parameter automatisch auf der Grundlage der Abmessungen des eingegebenen Bildes skaliert wird.

Hier ist das Ergebnis der Skalierung eines 16x16 SVG in ein 200x200 PNG mit diesem Befehl:

enter image description here

enter image description here

200voto

Ali Shakiba Punkte 19751

Pruebe svgexport :

svgexport input.svg output.png 64x
svgexport input.svg output.png 1024:1024

svgexport ist ein einfaches, plattformübergreifendes Kommandozeilentool, das ich für den Export von svg-Dateien in jpg und png entwickelt habe, siehe aquí für weitere Optionen. So installieren Sie svgexport npm installieren und dann ausführen:

npm install svgexport -g

Edit: Wenn Sie ein Problem mit der Bibliothek finden, bitte einreichen auf GitHub, danke!

154voto

Hardev Punkte 9311

Das ist nicht perfekt, aber es erfüllt seinen Zweck.

convert -density 1200 -resize 200x200 source.svg target.png

Im Grunde erhöht es die DPI hoch genug (verwenden Sie einfach eine fundierte / sichere Schätzung), dass die Größenänderung mit angemessener Qualität durchgeführt wird. Ich habe versucht, eine richtige Lösung für dieses Problem zu finden, aber nach einer Weile beschlossen, dies war gut genug für meinen aktuellen Bedarf.

Verwenden Sie 200x200!, um die angegebene Auflösung zu erzwingen

104voto

Inkscape scheint nicht zu funktionieren, wenn die svg-Einheiten nicht px (z.B. cm). Ich bekam ein leeres Bild. Vielleicht ließe sich das durch Drehen an der dpi-Einstellung beheben, aber das war zu mühsam.

Svgexport ist ein node.js-Programm und daher nicht allgemein nützlich.

Imagemagicks Konvertierung funktioniert gut mit:

 convert -background none -size 1024x1024 infile.svg outfile.png

Wenn Sie -resize Das Bild ist unscharf und die Datei ist viel größer.

BESTE

rsvg-convert -w 1024 -h 1024 infile.svg -o outfile.png

Es ist am schnellsten, hat die wenigsten Abhängigkeiten und die Ausgabe ist etwa 30% kleiner als bei convert. Installieren Sie librsvg2-bin, um es zu erhalten:

sudo apt install -y librsvg2-bin

Es scheint keine Man-Page zu geben, aber Sie können sie eingeben:

rsvg-convert --help

um Unterstützung zu erhalten. Einfach ist gut.

64voto

Jose Alban Punkte 6403

Wenn Sie mit MacOS X arbeiten und Probleme mit der Konvertierung von Imagemagick haben, können Sie versuchen, es mit der RSVG lib neu zu installieren. HomeBrew verwenden:

brew remove imagemagick
brew install imagemagick --with-librsvg

Überprüfen Sie, ob die Delegierung korrekt erfolgt:

$ convert -version
Version: ImageMagick 6.8.9-8 Q16 x86_64 2014-12-17 http://www.imagemagick.org
Copyright: Copyright (C) 1999-2014 ImageMagick Studio LLC
Features: DPC Modules
Delegates: bzlib cairo fontconfig freetype jng jpeg lcms ltdl lzma png rsvg tiff xml zlib

Es sollte angezeigt werden rsvg .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X