Je suis sous Linux et je voudrais prendre un fichier SVG et le cuire dans un fichier PNG à une résolution donnée (mise à l'échelle). Existe-t-il un moyen de le faire rapidement et efficacement à partir de la ligne de commande?
Je cherche quelque chose comme ça:
svg2png --width 128 --height 128 input.svg output.png
Existe-t-il un outil pour cela?
Réponses:
Utilisez la conversion d'ImageMagick :
Si la taille du canevas d'entrée est inférieure à la taille donnée, cela augmentera l'échelle de la sortie sans rééchantillonnage. Pour obtenir un résultat de meilleure qualité, ajoutez un
-density
paramètre:Les rasters ImageMagick vecteurs des images à leur résolution de canevas à une densité par défaut de 72 dpi.
Pour augmenter l'échelle avec un échantillonnage approprié, vous pouvez spécifier une valeur trop élevée, comme 500 dpi dans l'échantillon ci-dessus.
L'utilisation d'une densité de trame trop élevée peut être un problème de performances avec un canevas de grande taille. La densité de trame la plus basse et idéale est:
raster_density = raster_size / original_size * original_density
Cette densité de trame idéale produira une image directement à la taille attendue (pas
-resize
nécessaire). Mais comme des approximations de nombres flottants peuvent se produire, une valeur légèrement supérieure et un redimensionnement sont recommandés pour un résultat parfait en pixels.Vous pouvez obtenir la taille et la densité d'origine en utilisant les échappements en pourcentage d'ImageMagick :
Notez que ImageMagick ne gère pas les spécifications complètes de SVG. Si vous rencontrez des problèmes avec le rendu incorrect des formes, consultez ce fil sur la sélection du rendu ImageMagick SVG .
la source
rsvg
par moi-même la réponse ci-dessous, mais il est vraiment temps que je commence à utiliser ImageMagick.convert: unable to read font
(null) des erreurs «@ error / annotate.c / RenderFreetype / 1153.» que j'ai résolues parbrew install gs
, mais même lorsque la conversion s'est déroulée proprement, l'image résultante est une ordure.-background transparent
, sinon convertir utilise un fond blanc.inkscape in.svg --export-png=out.png
(exemple de superuser.com/a/493028/316154 )Les deux
rsvg
etinkscape
peuvent:Et:
la source