Est-il un équivalent de toile de toDataURL méthode pour le SVG?
Je suis en train de charger une image svg, canvas pour la manipulation de pixels
J'ai besoin d'une méthode comme toDataURL
ou getImageData
pour svg
sur google Chrome/Safari, je peux essayer de le faire par le biais de l'image et de la toile
var img = new Image()
img.onload = function(){
ctx.drawImage(img,0,0) //this correctly draws the svg image to the canvas! however...
var dataURL = canvas.toDataURL(); //SECURITY_ERR: DOM Exception 18
var data = ctx.getImageData(0,0,img.width, img.height).data //also SECURITY_ERR: DOM Exception 18
}
img.src = "image.svg" //that is an svg file. (same domain as html file :))
Mais j'obtiens des erreurs de sécurité.
D'une autre manière?
Voici une démo en live de le problème http://clstff.appspot.com/gist/462846 (vous pouvez voir la source)
Est le SVG image provenant d'un domaine différent? Si elle l'est, vous ne pouvez pas appeler
Il est à venir à partir de la de domaine. J'ai même essayé de faire
Ce qui semble être un bug dans Webkit: bugs.webkit.org/show_bug.cgi?id=39059
J'ai regardé ce bug. Il dit que le problème est avec
Avez-vous essayé d'utiliser fabric.js pour charger SVG sur la toile, puis obtenir dataurl image?
toDataURL
ou getImageData
parce que la toile n'est pas "d'origine-propre".Il est à venir à partir de la de domaine. J'ai même essayé de faire
img.src = "data:image/svg+xml;base64,..."
mais qui n'a pas fonctionnéCe qui semble être un bug dans Webkit: bugs.webkit.org/show_bug.cgi?id=39059
J'ai regardé ce bug. Il dit que le problème est avec
drawImage
. Pour moi, drawImage
œuvres. C'est le toDataURL
ou getImageData
qui ne fonctionne pas après que j'ai dessiner l'image.Avez-vous essayé d'utiliser fabric.js pour charger SVG sur la toile, puis obtenir dataurl image?
OriginalL'auteur Drew LeSueur | 2010-07-03
Vous devez vous connecter pour publier un commentaire.
À partir de: http://www.svgopen.org/2009/papers/12-Using_Canvas_in_SVG/#d4e105
OriginalL'auteur manalang
OriginalL'auteur Hubert OG
Oui, vous ne pouvez pas le faire directement, mais vous pouvez utiliser canvg pour cela, je veux dire, de dessiner SVG à la Toile, et d'obtenir les données de l'url à partir d'une Toile. Il n'est pas sans bugs, surtout pour des gradients complexes de traitement, mais j'ai eu une expérience positive avec elle.
OriginalL'auteur vladich
d'abord télécharger une bibliothèque js svg_todataurl.js et l'inclure
ensuite il suffit de coller ce code
OriginalL'auteur yellowcode