Comment puis-je convertir un élément HTML d'un élément canvas?
Il serait très utile d'être en mesure de convertir provisoirement un élément permanent dans un canvas
. Par exemple, dire que j'ai un style div
que j'ai envie de le feuilleter. Je veux créer dynamiquement une toile, de "rendre" la HTMLElement
dans la toile, de masquer l'élément d'origine et d'animer la toile.
Peut-il être fait?
- Je sais suis en retard, mais il peut être utile pour le futur lecteur. Voici Étape par Étape Tutoriel sur la Conversion de HTML à l'IMAGE codepedia.info/2016/02/...
Vous devez vous connecter pour publier un commentaire.
Désolé, le navigateur ne va pas rendre le code HTML dans une toile.
Il serait un risque de sécurité potentiel si vous pouviez, au format HTML peut inclure du contenu (en particulier les images et les iframes) à partir de sites tiers. Si
canvas
pourrait tourner HTML contenu dans une image, puis de vous lire les données d'image, vous pourriez potentiellement extrait privilégié du contenu provenant d'autres sites.Pour obtenir une toile de HTML, vous avez essentiellement écrire votre propre code HTML convertisseur de partir de zéro en utilisant
drawImage
etfillText
, qui est potentiellement un énorme travail. Il y a une tentative de ce genre ici mais c'est un peu douteux et un long chemin d'être complète. (Elle même tente d'analyser le code HTML/CSS à partir de zéro, ce qui je pense est fou! Ce serait plus simple pour démarrer à partir d'un véritable nœud DOM avec des styles appliqués, et de lire le style à l'aide degetComputedStyle
et les positions relatives des pièces à l'aideoffsetTop
et coll.)<iframe src="https://example-online-bank.com/mystatement">
pour inclure une page cible dans mon document, mais je n'ai pas accès au contenu de la page à l'aide de DOM et je ne devrais pas être en mesure d'accéder à cette information par screenshotting il.Il y a une bibliothèque qui essaient de faire ce que vous dites.
Voir ce exemples et obtenir le code
http://hertzen.com/experiments/jsfeedback/
http://html2canvas.hertzen.com/
Lit les DOM, à partir de l'html et de les rendre à une toile, ne parviennent pas à certains, mais en général les œuvres.
De construction sur le dessus de la Mozdev post que natevw références, j'ai commencé un petit projet pour rendre le code HTML sur la toile dans Firefox, google Chrome & Safari. Ainsi, par exemple, vous pouvez tout simplement faire:
Code Source et de plus en plus vastes exemple est ici.
Prendre un coup d'oeil à ce tutoriel sur MDN: https://developer.mozilla.org/en/HTML/Canvas/Drawing_DOM_objects_into_a_canvas
Autre Lien (2019) : https://reference.codeproject.com/book/dom/canvas_api/drawing_dom_objects_into_a_canvas
Il utilise un temporaire image SVG pour inclure le HTML contenu comme un "élément étranger", rend alors dit SVG image dans un canvas. Il y a d'importantes restrictions sur ce que vous pouvez inclure dans une image SVG, de cette façon, cependant. (Voir la section "Sécurité" pour plus de détails.)
Vous pouvez utiliser dom-to-image bibliothèque (je suis le responsable).
Voici comment vous pouvez approcher votre problème:
Et voici jsfiddle
Pas une telle chose, désolé.
Si la spec états:
Qui peut être aussi proche que vous obtiendrez.
Beaucoup de gens veulent un
ctx.drawArbitraryHTML/Element
genre de transaction, mais il n'y a rien construit comme ça.La seule exception est Mozilla exclusif
drawWindow
, qui attire un instantané du contenu d'un DOM fenêtre sur la toile. Cette fonctionnalité est disponible uniquement pour le code en cours d'exécution avec Chrome ("local seulement") privilèges. Il n'est pas permis dans les pages HTML. De sorte que vous pouvez l'utiliser pour écrire des extensions FireFox comme ce ne mais c'est tout.Vous pouviez vous-même les transformations, vous pouvez utiliser Transitions CSS3 de flip
<div>
's et<ol>
's et toute balise HTML que vous voulez. Voici quelques démos avec le code source expliquer à voir et à apprendre: http://www.webdesignerwall.com/trends/47-amazing-css3-animation-demos/La solution la plus simple pour animer les éléments du DOM est à l'aide de CSS transitions/animations, mais je pense que vous connaissez déjà et que vous essayez d'utiliser la toile pour faire des trucs CSS ne pas vous laisser faire. Qu'en est CSS personnalisé filtres? vous pouvez transformer vos éléments en tout imaginables façon, si vous savez comment écrire des shaders. Certains autres lien et n'oubliez pas de vérifier la CSS filtre de laboratoire.
Note: Comme vous pouvez l'imaginer, prise en charge du navigateur est mauvais.
le code suivant peut être utilisé dans les 2 modes, le mode 1 enregistrez le code html d'une image, mode 2 enregistrez le code html d'une toile.
ce code de travail avec la bibliothèque: https://github.com/tsayen/dom-to-image
*le "id_div" est l'id de l'élément html que vous souhaitez transformer.
**le "canvas_out" est l'id de la div qui contient la toile
donc, essayez ce code.
:
donc, si vous souhaitez enregistrer l'image il suffit d'ajouter cette fonction:
Exemple d'utilisation:
Commentaire si ce travail.
Comenten si les sirvio 🙂