


Pourquoi mon Canvas drawImage() ne parvient-il pas à restituer les images et comment puis-je résoudre les problèmes de chargement et de CORS ?
Dec 13, 2024 pm 06:19 PMÉnigme de CanvasContext2D drawImage() : résoudre les obstacles au chargement et au CORS
Présentation du problème :
Se lancer dans une escapade de peinture sur toile , vous vous retrouvez face à une énigme déroutante. Les images rendues via drawImage() échappent à votre compréhension, laissant derrière elles des URL de données vides. De plus, les tentatives d'affichage du canevas ne donnent aucun résultat visible et la console reste étrangement silencieuse.
Dévoiler la perplexité :
Le nœud du problème réside dans le prématuré la nature de votre talent artistique sur toile. Avant que drawImage() puisse exercer sa magie, l'image doit d'abord terminer son processus de chargement. Pour apaiser cette nécessité onLoad, adoptez la stratégie suivante :
// Create the image var img = new Image(); // Define the onload function img.onload = function() { // Canvas setup var canvas = document.createElement("canvas"); canvas.width = img.width; canvas.height = img.height; var context = canvas.getContext("2d"); // Draw the image context.drawImage(img, 0, 0); // Obtain the data URL var dataURL = canvas.toDataURL(); // Perform desired actions with dataURL doSomething(dataURL); }; // Set the image source img.src = "http://somerandomWebsite/picture.png";
Énigme et atténuation CORS :
Pour garantir une exécution transparente de toDataURL() et getImageData(), en respectant Le partage des ressources d’origine croisée (CORS) est impératif. Empêchez l'altération du canevas en garantissant l'un des scénarios suivants :
- Origine de l'image du même serveur.
- Serveur externe avec en-têtes CORS permissifs et img.crossOrigin défini sur "use-credentials ".
- Serveur CORS anonyme avec img.crossOrigin défini sur "anonyme".
Remarques importantes :
- Les en-têtes CORS proviennent du serveur et l'attribut d'origine croisée demande simplement l'utilisation de CORS.
- IE et Safari ne prennent pas en charge l'origine croisée attribut.
Cas limite : divergences dans les sources d'images :
Si vos images proviennent d'un mélange de sources du même serveur et conformes à CORS, envisagez d'utiliser le gestionnaire d'événements onerror. Attribuez l'origine croisée comme « anonyme » aux serveurs non-CORS et écoutez les erreurs.
function corsError() { this.crossOrigin = ""; this.src = ""; this.removeEventListener("error", corsError, false); } img.addEventListener("error", corsError, false);
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Article chaud

Outils chauds Tags

Article chaud

Tags d'article chaud

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Remplacer les caractères de chaîne en javascript

Tutoriel de configuration de l'API de recherche Google personnalisé

8 Superbes plugins de mise en page JQuery Page

Créez vos propres applications Web Ajax

Qu'est-ce que & # x27; ceci & # x27; en javascript?
