Je veux convertir SVG en images bitmap (comme JPEG, PNG, etc.) via JavaScript.
javascript
svg
Zain
la source
la source
Réponses:
Voici comment vous pouvez le faire via JavaScript:
la source
toImage()
et aussidownload()
pour une image téléchargée automatiquement.La solution jbeard4 a parfaitement fonctionné.
J'utilise Raphael SketchPad pour créer un SVG. Lien vers les fichiers de l'étape 1.
Pour un bouton Enregistrer (l'id de svg est "éditeur", l'id de canvas est "canvas"):
la source
<svg>...</svg
mais la fonction jquery html () n'ajoute pas de balise svg, donc ce code fonctionne pour moi mais j'avais besoin de modifier le canvg en directcanvg('canvas', '<svg>'+$("#editor").html()+'</svg>');
$(selector).html()
le parent de votre élément svg , cela fonctionnerahtml()
sur des wrappers, ou construire manuellement lasvg
balise parent - qui pourrait même avoir des attributs que vous omettez avec ce hack. Une simple utilisation$(svg_elem)[0].outerHTML
vous donne la source complète du svg et de son contenu. Je dis juste ...Cela semble fonctionner dans la plupart des navigateurs:
la source
.msToBlob()
La solution pour convertir SVG en URL blob et URL blob en image png
la source
J'ai écrit cette classe ES6 qui fait le travail.
Voici comment vous l'utilisez
Si vous voulez une version JavaScript vanille, vous pouvez vous rendre sur le site Babel et y transpiler le code.
la source
Voici une solution côté serveur basée sur PhantomJS. Vous pouvez utiliser JSONP pour effectuer un appel interdomaine au service d'imagerie:
https://github.com/vidalab/banquo-server
Par exemple:
http: // [hôte] /api/https%3A%2F%2Fvida.io%2Fdocuments%2FWgBMc4zDWF7YpqXGR/viewport_width=980&viewport_height=900&delay=5000&selector=%23canvas
Ensuite, vous pouvez afficher l'image avec la balise img:
Cela fonctionne à travers le navigateur.
la source
changer
svg
pour correspondre à votre élémentla source
Uncaught TypeError: Failed to execute 'serializeToString' on 'XMLSerializer': parameter 1 is not of type 'Node'.
Svg
àpng
convertir selon les conditions:svg
est au format SVG (chaîne) :new Path2D()
et définirsvg
comme paramètrecanvas.toDataURL()
commesrc
.exemple:
Notez que
Path2D
non pris en charge dansie
et partiellement pris en charge dans Edge. Polyfill résout cela: https://github.com/nilzona/path2d-polyfillsvg
blob et dessinez sur un canevas en utilisant.drawImage()
:Belle description: http://ramblings.mcpher.com/Home/excelquirks/gassnips/svgtopng
Notez que dans ie vous obtiendrez une exception sur scène de canvas.toDataURL (); C'est parce qu'IE a une restriction de sécurité trop élevée et traite le canevas en lecture seule après y avoir dessiné une image. Tous les autres navigateurs ne restreignent que si l'image est d'origine croisée.
canvg
bibliothèque JavaScript. Il s'agit d'une bibliothèque distincte mais a des fonctions utiles.Comme:
la source
J'ai récemment découvert quelques bibliothèques de suivi d'image pour JavaScript qui sont en effet capables de construire une approximation acceptable du bitmap, à la fois en taille et en qualité. Je développe cette bibliothèque JavaScript et CLI:
https://www.npmjs.com/package/svg-png-converter
Qui fournit une API unifiée pour tous, prenant en charge le navigateur et le nœud, sans dépendre du DOM, et un outil de ligne de commande.
Pour convertir des logos / dessins animés / images similaires, il fait un excellent travail. Pour les photos / réalisme, quelques ajustements sont nécessaires car la taille de sortie peut augmenter considérablement.
Il a une aire de jeux, bien que je travaille actuellement sur une meilleure, plus facile à utiliser, car plus de fonctionnalités ont été ajoutées:
https://cancerberosgx.github.io/demos/svg-png-converter/playground/#
la source