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
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.
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.
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é.
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é.
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:
svg
sur votre disque dur, par exemple, somefile.svg
tmp.html
qui contient cette ligne: <img src="somefile.svg">
"File -> New from Clipboard"
.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.
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.
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.
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
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
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
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.
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).
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.
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