493 votes

Comment convertir un SVG en PNG avec Image Magick?

J'ai un fichier SVG qui ont une taille de 16x16. Lorsque j'utilise l'Image Magick du programme de conversion pour convertir en PNG, puis je reçois un 16x16 pixels format PNG qui est trop petite:

convert test.svg test.png

J'ai besoin de spécifier la taille en pixels de la sortie PNG. -size paramètre semble être ignoré, -scale échelle des paramètres de la PNG après qu'il a été converti en PNG. Le meilleur résultat jusqu'à maintenant, j'ai obtenu à l'aide de la -density paramètre:

convert -density 1200 test.svg test.png

Mais je ne suis pas satisfait parce que je veux spécifier la taille de la sortie en pixels sans faire des maths pour calculer la valeur de la densité. Donc, je veux faire quelque chose comme ceci:

convert -setTheOutputSizeOfThePng 1024x1024 test.svg test.png

Alors, quelle est la magie paramètre-je utiliser ici?

641voto

808sound Points 1276

Je n'ai pas été en mesure d'obtenir de bons résultats de ImageMagick dans cette instance, mais Inkscape fait un excellent travail de celui-ci sur Linux et Windows:

inkscape -z -e test.png -w 1024 -h 1024 test.svg

Voici le résultat de la mise à l'échelle en 16x16 SVG pour un 200x200 PNG à l'aide de cette commande:

enter image description here

enter image description here

Juste pour la référence, ma version d'Inkscape (sur Ubuntu 12.04) est:

Inkscape 0.48.3.1 r9886 (Mar 29 2012)

et sur Windows 7, c'est:

Inkscape 0.48.4 r9939 (Dec 17 2012)

176voto

JohnS Points 3434

Essayez svgexport, c'est un Nœud simple utilitaire de ligne de commande que j'ai faite juste pour ça.

Si vous avez déjà installé la ngp, il suffit d'exécuter npm install svgexport -g pour l'installer, puis exécutez:

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

ou

svgexport input.svg output.png 16:16 1024:1024

Voir ici pour plus d'options.

134voto

Hardev Points 205

Ce n'est pas parfait mais ça fait le boulot.

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

Fondamentalement, cela augmente le DPI suffisamment élevé (utilisez simplement une estimation éclairée / sûre) que le redimensionnement est effectué avec une qualité adéquate. J'essayais de trouver une solution appropriée à cela, mais après un certain temps, j'ai décidé que c'était suffisant pour mes besoins actuels.

17voto

Pour redimensionner l'image, l'option -density doit être utilisée. Pour autant que je sache, la densité standard est de 72 et correspond à la taille 1: 1. Si vous voulez que le png de sortie soit aussi gros que la densité du set svg d'origine à 72 * 2 = 144

convertir -densité 144 source.svg target.png

7voto

ampecs Points 51

pourquoi ne pas essayer inkscape en ligne de commande, ceci est mon fichier bat pour convertir tous les svg dans ce répertoire en png:

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X