95 votes

Base64 png données du html5 canvas

Bonne journée les programmeurs,

Je veux charger une image png en base64 pour élément canvas. J'ai ce code:

<html>
<head>
</head>
<body>
<canvas id="c"></canvas>
<script type="text/javascript">

var canvas = document.getElementById("c");
var ctx = canvas.getContext("2d");

data =  "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAIAAAACDbGyAAAAAXNSR0IArs4c6QAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9oMCRUiMrIBQVkAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAADElEQVQI12NgoC4AAABQAAEiE+h1AAAAAElFTkSuQmCC";

ctx.drawImage(data, 0, 0);

</script>
</body>
</html>

Dans Chrome 8, j'ai obtenu ceci: Uncaught TypeError: Type d'erreur

Et dans Firefox Firebug: Le type d'un objet est incompatible avec le type du paramètre associé à l'objet" code: "17

Dans ce base64 est 5x5px noir png carré que j'ai fait dans GIMP et le transformer en base64 dans GNU/Linux du programme en base64.

Merci beaucoup pour les réponses.

181voto

Jerryf Points 783

Par les regards de celui-ci, vous devez passer à drawImage une image de l'objet comme

var canvas = document.getElementById("c");
var ctx = canvas.getContext("2d");

var image = new Image();
image.src = "data:image/  png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAIAAAACDbGyAAAAAXNSR0IArs4c6QAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9oMCRUiMrIBQVkAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAADElEQVQI12NgoC4AAABQAAEiE+h1AAAAAElFTkSuQmCC";
image.onload = function() {
    ctx.drawImage(image, 0, 0);
};

Je l'ai essayé sur chrome et ça fonctionne très bien.

0voto

user1118855 Points 31

Je suis " Mauvais Base64 de caractères d'entrée à 8192: 59(décimal)' erreur sur la console lors de la conversion des images svg. iam à l'aide de canvas.js fichier pour la conversion des images svg à la toile.

Mais cette image est l'ouverture dans le navigateur, mais pas ouvert dans PD4ML des fichiers pdf.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X