Ich bin unter Linux und möchte eine SVG-Datei mit einer bestimmten Auflösung (Skalierung) in eine PNG-Datei backen. Gibt es eine Möglichkeit, dies schnell und effektiv von der Befehlszeile aus zu tun?
Ich suche so etwas:
svg2png --width 128 --height 128 input.svg output.png
Gibt es ein Tool dafür?
Antworten:
Verwenden Sie ImageMagicks Konvertierung :
Wenn die Größe des Eingabebereichs kleiner als die angegebene Größe ist, wird die Ausgabe ohne erneutes Abtasten vergrößert. Um ein Ergebnis mit höherer Qualität zu erhalten, fügen Sie folgende
-density
Parameter hinzu:ImageMagick rastert Vektorbilder auf ihre Leinwandauflösung mit einer Standarddichte von 72 dpi.
Um eine korrekte Abtastung zu erzielen, können Sie einen zu hohen Wert wie 500 dpi im obigen Beispiel angeben.
Die Verwendung einer zu hohen Rasterdichte kann bei großen Zeichenflächen zu Performanceproblemen führen. Die niedrigste und ideale Rasterdichte ist:
raster_density = raster_size / original_size * original_density
Diese ideale Rasterdichte gibt das Bild direkt in der erwarteten Größe aus (nicht
-resize
erforderlich). Da jedoch möglicherweise Gleitkommazahlen angenähert werden, werden für ein pixelgenaues Ergebnis ein etwas höherer Wert und eine Größenänderung empfohlen.Mit den Prozentzeichen von ImageMagick erhalten Sie Originalgröße und -dichte :
Beachten Sie, dass ImageMagick nicht alle SVG-Spezifikationen unterstützt. Wenn Sie Probleme mit falsch gerenderten Formen haben, lesen Sie diesen Thread zur Auswahl des ImageMagick SVG-Renderers .
quelle
rsvg
aus der unten stehenden Antwort selbst herausgefunden, aber es ist wirklich an der Zeit, ImageMagick zu verwenden.convert: unable to read font
(null) "@ error / annotate.c / RenderFreetype / 1153." Fehler, die ich behoben habebrew install gs
, aber selbst wenn die Konvertierung sauber lief, ist das resultierende Bild Müll.-background transparent
, sonst verwende convert weißen hintergrund.inkscape in.svg --export-png=out.png
(Beispiel von Superuser / aBeides
rsvg
undinkscape
können:Und:
quelle