Est-il possible de créer une profondeur copie d'un élément de canevas avec tout le contenu dessiné?Un moyen de cloner un élément de canevas HTML5 avec son contenu?
Répondre
En fait, la bonne façon de copier les données de la toile est de passer la vieille toile à la nouvelle toile vierge. Essayez cette fonction. L'utilisation de getImageData est pour l'accès aux données de pixels, et non pour la copie de canevas. La copie avec est très lente et dure sur le navigateur. Cela devrait être évité.
Vous pouvez appeler
context.getImageData(0, 0, context.canvas.width, context.canvas.height);
qui renverra un objet ImageData. Cela a une propriété nommée data de type CanvasPixelArray qui contient les valeurs rgb et de transparence de tous les pixels. Ces valeurs ne sont pas des références à la toile et peuvent donc être modifiées sans affecter le canevas.
Si vous souhaitez également une copie de l'élément, vous pouvez créer un nouvel élément canvas, puis copier tous les attributs dans le nouvel élément canvas. Après cela, vous pouvez utiliser la méthode
context.putImageData(imageData, 0, 0);
pour dessiner l'objet ImageData sur le nouvel élément canvas.
Voir cette réponse pour plus de détails getPixel from HTML Canvas? sur la manipulation des pixels.
Vous trouverez peut-être cet article mozilla utile aussi bien https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Canvas_tutorial/Drawing_shapes
Bon point. Merci. – Castrohenge
Ce n'est pas une très bonne méthode de copie. Ceci est plus adapté pour le stockage de données. –
- 1. Un élément de canevas html5 en arrière-plan de ma page?
- 2. Point de contrôle de canevas HTML5 approprié
- 3. Importer une image sur un canevas html5
- 4. Comment sélectionner un élément en fonction de son contenu?
- 5. Matrice de transformation de canevas HTML5
- 6. JQuery ajoute à un élément son propre contenu
- 7. "Effacement" dans le canevas html5
- 8. Forcer un élément de la liste à s'aligner avec le haut de son contenu dans LaTeX
- 9. impossible d'accéder au canevas html5?
- 10. Conversion d'image en canevas/HTML5
- 11. Découvrez quel objet a été cliqué sur un canevas html5
- 12. Création d'une image 3D anaglyphe sur un canevas HTML5
- 13. Comment faire une telle forme dans un canevas HTML5?
- 14. Élément de canevas: Image cliquée
- 15. MVVM dans un canevas avec commandes usercontrol
- 16. Cloner un champ sans le cloner aussi
- 17. Comment sélectionner un élément avec son contenu textuel via CSS et non XPath?
- 18. copie Programatically un contrôle de contenu ainsi que son contenu
- 19. Meilleur moyen d'insérer un élément avec JavaScript
- 20. comment cloner le contenu d'un div vers un autre div
- 21. Comment conserver un élément fixe contenu dans un élément relatif?
- 22. Existe-t-il un moyen de référencer l'enfant d'un élément d'interface utilisateur WPF par son nom?
- 23. Comment cloner un élément dans une liste SharePoint?
- 24. Jouer la vidéo et le son avec HTML5
- 25. Élément de canevas HTML 5 avec requête GWT
- 26. (js/jquery) Rotation d'une image dans FF/Saf/Chrome sans Canevas OU Zoom sur un élément de canevas
- 27. Existe-t-il un moyen de mosaïquer une image d'arrière-plan sur un chemin de canevas?
- 28. Python façon de cloner un dépôt git
- 29. Mettez DrawingGroup sur un canevas?
- 30. Cloner l'élément avec la classe
+1 sur la référence 'drawImage()', mais il vaut la peine de noter que l'appel à 'new Canvas()' ne fonctionne pas dans tous les navigateurs (notamment Firefox) - vous devriez plutôt utiliser 'document.createElement ('canvas')' –
@AJ. Merci, je l'ai réparé. –
erreur assez étrange ici: lors du chargement d'une image et en ajustant la taille de la toile en conséquence et _then_ clonage, il ne clone que le premier 300px (horizontalement) et le premier 150px (verticalement) (voir http: //peter.muehlbacher. me/playground/mycelium? src = ../downloads/chess_pawn.png console en cliquant autour - il enregistre les valeurs alpha de la copie) – Peter