web-dev-qa-db-fra.com

Application en ligne de commande pour la conversion de SVG en PNG sous Mac OS X

Existe-t-il des programmes en ligne de commande capables de convertir un fichier SVG en fichier PNG fonctionnant sous Mac OS X?

Edit : Dylan B avait une bonne réponse avec ImageMagick. Pour référence, pour installer ImageMagick avec le support SVG sur Mac OS X avec MacPorts, ne

port install imagemagick +rsvg
151
Lorin Hochstein

Ou sans rien installer:

qlmanage -t -s 1000 -o . picture.svg 

Il produira un fichier image.svg.png de 1000 pixels de large.

Je l'ai testé uniquement sur OS X 10.6.3.

219
tst

J'ai trouvé que le meilleur outil pour ce travail est rsvg-convert.

On peut le trouver dans le brassage avec brew install librsvg et s'utilise comme ceci:

rsvg-convert -h 32 icon.svg > icon-32.png

(Cet exemple crée un png de 32px de haut. La largeur est déterminée automatiquement.

98
Ahti

ImageMagick est un éditeur d'images en ligne de commande extrêmement , qui rivaliserait probablement avec Photoshop s'il possédait, vous le savez, une interface graphique. Mais qui a besoin de toute façon? : P

Quelque chose comme ce qui suit pourrait convertir un fichier .svg en .png, après l'installation:

$ convert picture.svg picture.png

Le fichier .svg d'origine n'est pas supprimé.

40
Jessie

Inkscape avec son interface en ligne de commande génère les meilleurs résultats pour moi:

/Applications/Inkscape.app/Contents/Resources/bin/inkscape --export-png output.png -w 1024 -h 768 input.svg

La bonne chose est que vous pouvez spécifier la taille exacte en pixels de l’image obtenue, sans avoir à vous soucier de la densité.

28
seb

OK, j'ai trouvé un moyen simple de le faire sur Mac si vous avez Google Chrome.

En une phrase, il s'agit de voir l'image svg dans une page Web (doit figurer dans un fichier html), cliquer avec le bouton droit de la souris sur l'image, choisir "Copier l'image" et coller l'image dans l'application Aperçu.

Pas:

  1. Téléchargez ou insérez le fichier svg sur votre disque dur, par exemple, somefile.svg
  2. Maintenant, dans le même dossier, créez simplement un fichier html tmp.html qui contient cette ligne: <img src="somefile.svg">
  3. Maintenant, ouvrez ce fichier HTML dans Google Chrome
  4. Vous devriez voir l'image. Maintenant, faites un clic droit sur l'image et choisissez "Copier l'image"
  5. Accédez à l'application de prévisualisation pour Mac et choisissez "File -> New from Clipboard".
  6. Maintenant, File -> Save le fichier et vous avez le fichier png. (ou d'autres types de fichiers).

Ceci est testé sur le Chrome actuel (version 48.0) sur Mac OS X El Capitan.

Mise à jour: Je ne sais pas si cela est dû à une restriction imposée par Google Chrome. Je viens d’essayer un fichier SVG avec Chrome 58.0, et j’obtiens une petite image grâce à la méthode ci-dessus. Si vous voyez ce cas aussi, vous pouvez aussi utiliser

<img src="somefile.svg" style="height: 82vh; margin-top: 9vh; margin-left: 9vh">

et vous aurez une image à l'écran qui vous permettra de faire une capture d'écran - en utilisant CmdShift4 ou CmdShift3 sur le Mac, par exemple. Assurez-vous de redimensionner votre fenêtre Chrome au maximum autorisé à l'écran.

15

Si vous voulez en faire plusieurs à la fois, vous pouvez:

mogrify -format png *.svg

Il y a aussi des options pour redimensionner etc. à la volée.

5
DefenestrationDay

Essayez Apache Batik .

Java -jar batik-rasterizer.jar FILES

Il prend également en charge la conversion par lots et propose de nombreuses autres options utiles.

4
Behrang

J'ai fait svgexport en utilisant node/npm pour cela, il est multi-plateforme et peut être aussi simple que:

svgexport input.svg output.png
4
Ali Shakiba

Vous pouvez également utiliser phantomjs pour rendre le svg. L'avantage est qu'il le rend comme le ferait un navigateur puisqu'il s'agit essentiellement d'un WebKit sans tête.

Une fois que vous l'avez téléchargé, vous devez disposer de phantomjs (binaire) et du fichier rasterizer.js du dossier des exemples.

phantomjs examples/rasterize.js Tiger.svg out.png
3
Stofke

La commande convert d'ImageMagick, utilisant d'autres paramètres, est ce qui me l'a fait. Voici ma solution de script batch Bash qui divise la tâche en plusieurs processus pour utiliser tous vos cœurs! Modifier au besoin.

batchConvertToSVG.sh (prend le nombre de processus en argument):

end=$(( $1 - 1 ))
for i in `seq 0 $end`;
        do
            echo Spawning helper $i of $end
                ./convertToSvgHelper.sh $i $1 &
        done 

convertToSvgHelper.sh:

n=$1
for file in ./*.svg; do
   filename=${file%.svg}
   echo converting file named $filename
   test $n -eq 0 && convert -format png -resize 74 -background transparent -density 600 $file $filename.png
   n=$((n+1))
   n=$((n%$2))
done
1
sudo

J'utilise cette commande sur mon linux. Cela devrait fonctionner pour vous aussi.

mogrify +antialias -density 2000 -verbose -format png *.svg

J'ai appris que sans l'argument "-density", le bitmap serait très pixelisé. Changez la valeur de densité pour répondre à vos besoins.

1
BersekerBernhard

Comme commenté précédemment ImageMagick fait le tour. Je voulais juste ajouter un point pour GraphicsMagick , un vieux fichier fork d'ImageMagick qui apporte quelques améliorations (et beaucoup moins de dépendances lorsqu'il est installé via fink).

0
user31752

C'est ce que j'ai utilisé:

brew install imagemagick --with-librsvg

Puis exécutez les commandes suivantes:

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

J'espère que ça aide.

0
Alan Dong

Vous pouvez effectuer une conversion par lots sur un dossier entier de fichiers SVG au format PNG. J'ai utilisé l'interface de ligne de commande Inkscape pour générer des fichiers png d'une largeur de 80 pixels.

find ~/desktop/toconvert '*.svg' -exec /Applications/Inkscape.app/Contents/Resources/bin/inkscape -z -w 80 -e "{}".png "{}" \;

png sera enregistré avec le nom d'origine * .png