Quiero cargar una imagen PNG codificada en Base64 al elemento canvas. Tengo este código:Base PNG de datos al lienzo HTML5
<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>
En Chrome 8 me sale el error: Uncaught TypeError: Type error
Y en Firefox Firebug esto: "El tipo de un objeto es incompatible con el tipo esperado del parámetro asociado al objeto "código:" 17 "
En esa base64 hay 5x5px negro PNG cuadrado que he hecho en GIMP y lo gano a base64 en el programa base64 de GNU/Linux.
Buena respuesta, pero ¿está seguro de que esto funciona todo el tiempo? Me pareció problemático dibujar una imagen inmediatamente después de configurar 'src', porque se supone que debes usar la devolución de llamada' onload' para asegurarte de que la imagen haya terminado de cargarse. El 50% de mis pruebas fallaron porque la imagen no había terminado de cargarse. –
¡Guau! Explosión del pasado :). Estás en lo cierto. Si llama a drawImage justo después de configurar el src de la imagen, es probable que se encuentre con problemas y, dependiendo de su situación, lo más probable es que desee utilizar onload para asegurarse de que la imagen se cargue antes de intentar renderizar. al lienzo. El código anterior era solo más un ejemplo que muestra que drawImage en realidad requiere un objeto de imagen y cómo pasarle eso. – Jerryf
Al igual que una nota, si está recorriendo un número de lienzos, puede querer cambiarlo a 'ctx.drawImage (this, 0,0);' para que se asegure de que la variable de imagen se refiere a la imagen correcta. ¡Gran respuesta! – Dormouse