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?

10voto

qubodup Punkte 7298

Transparenter Hintergrund, exportiert in Zielhöhe/-größe mit ImageMagick 7:

magick -background none -size x1080 in.svg out.png

Einzeiler-Massenkonverter:

for i in *svg; do magick -background none -size x1080 "$i" "${i%svg}png"; done

8voto

ampecs Punkte 71

Warum versuchst du es nicht mit der Inkscape-Befehlszeile? Das ist meine Bat-Datei, mit der ich alle svg in diesem Verzeichnis in png umwandle:

FOR %%x IN (*.svg) DO C:\Ink\App\Inkscape\inkscape.exe %%x -z --export-dpi=500 --export-area-drawing --export-png="%%~nx.png"

8voto

Shivam Punkte 545

Das hat bei mir funktioniert und wäre am einfachsten zu bewerkstelligen.

find . -type f -name "*.svg" -exec bash -c 'rsvg-convert -h 1000  $0 > $0.png' {} \;
rename 's/svg\.png/png/' *

Dies führt eine Schleife durch alle Dateien in Ihrem aktuellen Ordner und Unterordner und sucht nach .svg Dateien und wandelt sie in png mit transparentem Hintergrund um.

Stellen Sie sicher, dass Sie librsvg installiert haben und benennen Sie util

brew install librsvg
brew install rename

6voto

TLbiz Punkte 457

Ohne librsvg erhalten Sie möglicherweise ein schwarzes png/jpeg-Bild. Wir müssen installieren librsvg à convert svg-Datei mit imagemagick.

Ubuntu

 sudo apt-get install imagemagick librsvg
 convert -density 1200 test.svg test.png

MacOS

 brew install imagemagick librsvg
 convert -density 1200 test.svg test.png

6voto

Qohelet Punkte 1228

Ich bin auf diesen Beitrag gestoßen - aber ich wollte nur die Konvertierung per Stapelverarbeitung und schnell ohne die Verwendung von Parametern durchführen (wegen mehrerer Dateien mit unterschiedlichen Größen).

rsvg drawing.svg drawing.png

Für mich waren die Anforderungen wahrscheinlich etwas einfacher als für den ursprünglichen Autor. (Ich wollte SVGs in MS PowerPoint verwenden, aber das ist nicht möglich)

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