Ich möchte ein in Base64 codiertes PNG-Bild in das Canvas-Element laden. Ich habe diesen 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>
In Chrome 8 erhalte ich folgende Fehlermeldung: Uncaught TypeError: Type error
Und in Firefoxs Firebug: "Der Typ eines Objekts ist nicht kompatibel mit dem erwarteten Typ des Parameters, der dem Objekt zugeordnet ist." Code: "17"
In diesem base64 befindet sich ein 5x5px schwarzes PNG-Quadrat, das ich in GIMP erstellt habe, und wandle es in base64 im GNU / Linux-Programm base64 um.
src
, da Sie denonload
Rückruf verwenden sollten, um sicherzustellen, dass das Bild vollständig geladen wurde. 50% meiner Tests sind fehlgeschlagen, weil das Bild noch nicht vollständig geladen wurde.ctx.drawImage(this,0,0);
dass sichergestellt ist, dass die Bildvariable auf das richtige Bild verweist. Tolle Antwort!data:image/
Länge groß ist, werden wir bekommen414 (Request-URI Too Long
Jerryfs Antwort ist bis auf einen Fehler in Ordnung.
(Wie Totty.js betonte.)
quelle
onload
vorher zu setzensrc
... Ich mache es mir zur Gewohnheit, dies zu tun.