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

167

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
Lorin Hochstein
la source
2
J'ai trouvé un moyen si vous avez Google Chrome ... et pas besoin d'installer d'autres choses: superuser.com/questions/134679/…
nopole
cairosvg.org fonctionne pour python3 et ne semble pas avoir de problème. pip3 install cairosvg
JayRizzo

Réponses:

234

Ou sans rien installer:

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

Il produira un fichier picture.svg.png d'une largeur de 1000 pixels.

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

tst
la source
38
Malheureusement, cette image clip sur un carré.
Martijn Pieters
7
Ah, qlmanage -tdonne la vignette utilisée par Quick Look (dans le Finder, etc.). Idée brillante. Malheureusement, ces miniatures peuvent être boguées, en particulier lorsque du texte est impliqué.
ShreevatsaR
7
Cela produit des images avec le fichier svg dans le 1er quadrant. Ne recadre pas automatiquement. Essayer de convertir des fichiers de nom de projet - je souhaite que cela fonctionne.
Alex Cook
7
Cette solution ne prend pas en compte la transparence. L'outil rsvg-convertde la réponse de @ ahti fonctionnait auparavant pour moi.
BenR
3
Mettre les paramètres de largeur et de hauteur après l' -soption ne fonctionnait pas pour moi. Le recadre toujours en carré. Très frustrant!
Erik van der Neut
107

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

On peut le trouver en infusion avec brew install librsvget est utilisé 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.

Ahti
la source
C'est le seul qui a fonctionné pour moi sur Mavericks et commons.wikimedia.org/wiki/…
Aron Ahmadia
En fait, celui-ci a fonctionné, alors que ImageMagick a commis des converterreurs et n'a pas réussi à dissimuler un fichier SVG complexe
Brice.
7
C'est de loin la meilleure solution que j'ai trouvée pour OS X Yosemite +1!
Greg Martin
Cela a étrangement échoué pour certains de mes SVG. La qlmanageréponse a fonctionné pour tous, mais mettez un fond blanc, ce que je ne veux pas.
Sudo
1
Avec rsvg-convert.png obtenu avait les bonnes dimensions, mais l’image était entièrement noire au lieu des couleurs originales. Avec qlmanagel'image est recadrée à un carré. Toujours à la recherche d'une solution :-(
Erik van der Neut
43

ImageMagick est un éditeur d'images en ligne de commande extrêmement polyvalent, qui rivaliserait probablement avec Photoshop s'il possédait 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é.

Jessie
la source
Il a en quelque sorte une interface graphique, dans display.
Ignacio Vazquez-Abrams le
1
Quand j'ai installé ImageMagick avec Fink, je n'ai pas pu convertir svg en png - il y a eu des erreurs. Il s'est avéré que je devais également installer librsvg2-bin.
2010
Si librsvg2-bin n'est pas installé (comme sous OS X), cela échouera. Impossible de trouver un moyen de l'installer sous OS X.
John Sheehan
3
Cela ne fonctionnera pas bien si vous souhaitez redimensionner le fichier SVG car il génère des images floues.
Behrang
3
Il ne convertit pas tous les fichiers SVG correctement non plus; au moins qlmanage a obtenu toutes les parties de l'image.
Johan
28

Inkscape avec son interface en ligne de commande produit 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é.

Seb
la source
Cela fonctionne pour moi! - J'ai un plus gros SVG créé avec Inkscape
Matheszabi
C’est la seule méthode qui rende correctement mon svg manuscrit
Griffin le
Convert ne génère pas de bons fichiers PNG à partir de SVG. Utiliser Inkscape est le meilleur moyen que j'ai trouvé jusqu'à présent.
ol_v_er
Cela fonctionne pour moi, mais crée des fichiers extrêmement flous.
Marcin
3
J'ai eu un problème pour trouver des fichiers, alors lancez-leinkscape $(pwd)/logo.svg --export-png $(pwd)/logo.png
Andrei
16

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' svgimage dans une page Web (doit être dans un htmlfichier), faites un clic droit sur l'image et choisissez "Copier l'image" et collez-la dans l'application Aperçu.

Pas:

  1. Téléchargez ou insérez le svgfichier sur votre disque dur, par exemple,somefile.svg
  2. Maintenant, dans le même dossier, créez un fichier HTML tmp.htmlcontenant 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. Allez sur Preview App de Mac, et choisissez, "File -> New from Clipboard"
  6. Maintenant File -> Savele fichier et vous avez le pngfichier. (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 de 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 CmdShift4ou CmdShift3sur le Mac, par exemple. Assurez-vous de redimensionner votre fenêtre Chrome au maximum autorisé à l'écran.

nopole
la source
Solution intelligente!
Manu
1
Cela produit réellement les meilleurs résultats pour moi, car le rendu est identique à celui du navigateur.
Jason Haslam
la résolution résultante était très mauvaise pour moi
Michael
Ingénieux :) mais pour les très gros SVG, la résolution de l'image résultante est trop basse, comme l'a mentionné @Michael.
waldyrious
5

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.

DefenestrationDay
la source
3
mogrifyest également à l'image d'ImageMagick.
ShreevatsaR
Fonctionne très bien, mais brutalement lentement.
Meekohi
-1? Quelqu'un pense que ce n'est pas utile? Quelle est l'erreur?
DefenestrationDay
2
Je ne suis pas celui qui a déclassé le vote, mais il est intéressant de noter que ImageMagick convertit bêtement svg en une image raster de taille arbitraire avant le redimensionnement, ce qui entraîne une sortie floue.
Dae
4

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.

Behrang
la source
4

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

svgexport input.svg output.png
Ali Shakiba
la source
C'était le plus facile à utiliser et à retenir de loin. Aussi, le seul qui a produit un résultat correct dans mon cas.
Marko Grešak
la résolution résultante n'était pas terrible pour moi.
Michael
3

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 (binary) et du fichier rasterizer.js du dossier examples.

phantomjs examples/rasterize.js Tiger.svg out.png
Stofke
la source
1
Pour référence, cela peut être installé avec brew cask install phantomjs. Dans mon installation, le dossier des exemples était situé dans le chemin /usr/local/Caskroom/phantomjs/2.1.1/phantomjs-2.1.1-macosx/examples/.
waldyrious
2

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.

Alan Dong
la source
1

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é. Modifiez la valeur de densité pour répondre à vos besoins.

BersekerBernhard
la source
2
Même avec la densité, la conversion ne génère pas une image aussi nette qu'une image vectorielle. Essayez Apache Batik à la place.
Behrang
1

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
sudo
la source
0

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


la source
0

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

James Matthew Mudgett
la source
0

Encore une autre méthode sans rien installer. Pas en ligne de commande cependant.

  1. Ouvrez le fichier .svg dans Safari.
  2. Appuyez sur alt-command-i pour ouvrir l'inspecteur.
  3. Faites un clic droit sur la <svg>balise, sélectionnez "Capture Capture". (Notez que vous ne devez pas agrandir l'image.)

PS Pour agrandir l’image .svg si elle est trop petite, ouvrez le fichier .svg dans l’éditeur de texte et ajoutez-le 0à chaque numéro, sauf dans le méta-attribut. Cela peut être fait par une substitution de regex globale de (\d+)à $10, où $1est l'espace réservé pour la référence arrière, par exemple.

Haotian Yang
la source
Vous devriez probablement mentionner que ceci est presque identique à la  réponse de 者 無極 而 生 .
Scott
-1

wkhtmltoimage (du projet wkhtmltopdf) a bien converti cela:

wkhtmltoimage --zoom 2 foo.svg foo.png

ImageMagick rend le caractère CJK vierge sur mon mac.

georgexsh
la source
Bien que ce lien puisse répondre à la question, il est préférable d’inclure ici les parties essentielles de la réponse et de fournir le lien à titre de référence. Les réponses avec lien uniquement peuvent devenir non valides si la page liée est modifiée. - De l'avis
Blackwood
@ Blackwood bien, mis à jour.
georgexsh