Existe-t-il un moyen par défaut de dessiner un fichier SVG sur un canevas HTML5? Google Chrome prend en charge le chargement du SVG en tant qu'image (et simplement l'utilisation drawImage
), mais la console du développeur l'avertit resource interpreted as image but transferred with MIME type image/svg+xml
.
Je sais qu'une possibilité serait de convertir le SVG en commandes de canevas (comme dans cette question ), mais j'espère que ce n'est pas nécessaire. Je me fiche des anciens navigateurs (donc si FireFox 4 et IE 9 supportent quelque chose, c'est assez bien).
Réponses:
EDIT 16 déc.2019
Path2D est pris en charge par tous les principaux navigateurs maintenant
EDIT 5 novembre 2014
Vous pouvez maintenant utiliser
ctx.drawImage
pour dessiner des HTMLImageElements qui ont une source .svg dans certains mais pas tous les navigateurs . Chrome, IE11 et Safari fonctionnent, Firefox fonctionne avec certains bogues (mais les a corrigés tous les soirs).Exemple en direct ici . Vous devriez voir un carré vert dans la toile. Le deuxième carré vert sur la page est le même
<svg>
élément inséré dans le DOM pour référence.Vous pouvez également utiliser les nouveaux objets Path2D pour dessiner des chemins SVG (chaîne). En d'autres termes, vous pouvez écrire:
Exemple en direct de cela ici.
Ancienne réponse de la postérité:
Il n'y a rien de natif qui vous permet d'utiliser nativement les chemins SVG dans le canevas. Vous devez vous convertir ou utiliser une bibliothèque pour le faire pour vous.
Je suggérerais de chercher à canvg:
http://code.google.com/p/canvg/
http://canvg.googlecode.com/svn/trunk/examples/index.htm
la source
drawImage
. Mais je reçois toujours cet avertissement. D'où est ce que ça vient?Désolé, je n'ai pas assez de réputation pour commenter la réponse @Matyas, mais si l'image du svg est également en base64, elle sera dessinée vers la sortie.
Démo:
la source
img
balises dans lesvg
, et simplement dessiner des images sur le canevas séparément par la suite.Vous pouvez facilement dessiner des
svg
s simples sur une toile en:Remarque: le seul inconvénient de la méthode est qu'elle ne peut pas dessiner d'images incorporées dans le
svg
. (voir démo)Manifestation:
(Notez que l'image intégrée n'est visible que dans le
svg
)la source
Mozilla a un moyen simple de dessiner SVG sur un canevas appelé " Dessiner des objets DOM dans un canevas "
la source
Comme le dit Simon ci-dessus, l'utilisation de drawImage ne devrait pas fonctionner. Mais, en utilisant la bibliothèque canvg et:
Cela vient du lien fourni par Simon ci-dessus, qui contient un certain nombre d'autres suggestions et indique que vous souhaitez créer un lien ou télécharger canvg.js et rgbcolor.js. Ceux-ci vous permettent de manipuler et de charger un SVG, soit via une URL, soit en utilisant du code SVG en ligne entre des balises svg, dans des fonctions JavaScript.
la source