Curso-Tutorial HTML5 – Cargar una imagen en Canvas
Bienvenidos a VerTutoriales.com, en esta ocasión vamos a seguir con el curso de HTML 5, y siguiendo con el canvas, vamos a mostrar el código para ver como podemos cargar una imagen en el canvas, en siguientes tutoriales veremos como tratar esa imagen, girarla, modificarla, etc… pero vamos poco a poco, para empezar, vamos a cargarla. Veamos como:
Cargar una imagen en un canvas con HTML5
Para comenzar con este tutorial, vamos a explicar el metodo drawImage() y continuaremos como cargar imagenes en el objeto Image de Javascript. Pero comencemos con DrawImage()
drawImage(objeto_imagen, x, y):
Esta función recibe 3 parámetros, la primera es el objeto imagen que más adelante explicaremos como cargarlo, el segundo y tercer parámetro son las coordenadas donde colocar nuestra imagen dentro del lienzo del Canvas. Ahora vamos a ver el...
Objeto Image de JavaScript:
Para cargar una imagen, lo primero que debemos de cargar es un objeto imagen
var
imagenCanvas = new Image();
A continuación le paso el recurso (la imagen en sí) que puede ser JPG, GIF y PNG, de la siguiente manera:
imagenCanvas
.src = "http://www.forohtml5.com/forohtml5.jpg";
Y para finalizar cargamos en el contexto del Canvas, pero para ahorrarnos problemas de descarga en nuestro navegador, usaremos el evento onload de la imagen para no mostrar la imagen antes de haberla cargado de la siguiente manera:
imagenCanvas
.onload = function() {
contexto.drawImage(imagenCanvas
, 30, 15);
}
Aunando todo el ejemplo, veamos como quedaría el script completo:
<script type="text/javascript">
window.onload = function() {
varPintaCanvas
= document.getElementById('Canvas-HTML5');// compruebo que pueda soportar el canvas
if(PintaCanvas
&&PintaCanvas
.getContext) {
// inicializo para “dibujar” en 2D
var contexto = PintaCanvas.getContext(‘2d’);//cargo la imagen y lo asigno al canvas
var ImagenHTML5 = new Image();
ImagenHTML5
.onload = function() {
contexto.drawImage(ImagenHTML5
, 30, 15);
}
ImagenHTML5 .src = “http://www.forohtml5.com/forohtml5.jpg”;}
}
</script>
Con este script ya podriamos cargar una imagen de forma sencilla, luego solo faltaría cargarlo en el canvas, os dejo el código de ejemplo completo para que lo copieis y podais hacer pruebas en vuestro pc:
<html>
<head>
<title>Cargar imagen en un Canvas de HTML5</title>
<script type=”text/javascript”>
window.onload = function() {
var PintaCanvas = document.getElementById(‘Canvas-HTML5’);// compruebo que pueda soportar el canvas
if(PintaCanvas && PintaCanvas.getContext) {
// inicializo para “dibujar” en 2D
var contexto = PintaCanvas.getContext(‘2d’);//cargo la imagen y lo asigno al canvas
var ImagenHTML5 = new Image();
ImagenHTML5.onload = function() {
contexto.drawImage(ImagenHTML5, 30, 15);
}
ImagenHTML5.src = “http://www.forohtml5.com/forohtml5.jpg”;
}
}
</script>
</head>
<body>
<canvas id=”Canvas-HTML5″ width=”200″ height=”200″>
<p>tu navegador no soporta canvas.</p>
</canvas>
</body>
</html>
Si habeis seguido el resto de tutoriales no tendreis problema en comprender este ejemplo, si no los habeis seguido, os recomiendo que comenceis por el primer tutorial sobre Canvas en HTML5, tambien os recomiendo que si teneis más interés sobre esta ampliación de html, visitad forohtml5.com.
Ya sabeis que para cualquier duda podeis comentarlo o visitar el foro que mencionamos antes.
Un saludo!
<canvas id="myDrawing" width="200" height="200">
<p>tu navegador no soporta canvas.</p>
</canvas>
Comments
Excelente turorial, cayo de perlas.
tengo una pregunta: Al llamar las imagenes desde javascript, como hago para generarle un identificador, para luego darle un estilo en un css? o ¿como llamo a esa imagen desde el css o desde otro archivo externo como un jQuery?
Gracias por tu respuesta.
Cuando llamas la imagen con el .src entiendo que puedes asignarle el estilo, el id y todos los campos del objeto, pero no lo he probado.
Si haces uso y consigues algo, te agradecería que lo compartieras!
Un saludo y gracias por adelantado 🙂
Tengo una imagen en una base de datos documental – Mongo, como podría poner dicha imagen en un canvas.
Gracias por adelantado.
Buenas Jorge, desconozco cómo se guardan las imágenes en MongoDB, supongo que será en base64. Si es así, podrías asignárselo como si de una imagen se tratase. Por ejemplo:
imagenCanvas.src = “data:image/png;base64,data:image/jpeg;base64,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3aFoMjhC1azc60q/F/2aVZNvTqyaghC6lWk2WyGCteZ2KNqSXBHWpWKE4njUBgQWXAKhBCA2WgISgJ705DBPMfVeW3wvtWkUERSOwisivfaecaRIXCef8obE6MZVKCsDwGfavDcaMT5lNy7UqIsIZlRz/sFCQd/wUxJz/EpaAbKV6U2UOUtijR2jnpQhZB8zTzapnMnUcAiKmkiY2qCaTL59aBfCGU6xwpgC17rRw8yHFSXtN3hvULUf6najJOWrFZdMDK5WSE7larhUhKJzoZ/CCYBVkdajG3Gf9VwQ7MuvqdlRWy6lZeYStJzrgtUZV8rny/qsvIAQfhC+AE4z1rm8LU0fCsdqEkCwGlAGgGxJgUY0BY/lJxYxYLM0kXZhKKhWwxDe1MaJ72c1aQKSpaEVIQlT4IkSFBLJkLJRJptqCHygUcaAbFqAgBGyNZvXS1QYYySYoUchDXBWmU5UW12RUJQ+2q3ThdSY0EuGTEBMWVOzAhNVTAbakivPNpaHWXMRXGr6ialrcmcN6vJWYmghMmQslAkqbQ/VEDcPXBZeZzJODwQgLBahpGhHWpwTsSqSxyTy0WIUI61OCdiVS2ZE8tJNjYIKNaDBV4F2ZCU5JLMtya41YKM23/HQsOYSNS3EDb2qZfdGsqJuQdqC4KuJUlTRfK/Kve9nFNnvk9q6UugyHaMf8n3rCazYczQDYemvgjP/AMk//9oADAMAAAERAhEAABDzzzzznrTnTzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzBu897/wB4588888888888888888888888888888888888iO8888888eZ888888888888888888888888888888888pU888www884b+88888888888888888888888888888888EwN3IPjixzwhG88888888888888888888888888888888ak+usoUFNKFKC14888888008888888o8888w888888888BN0TPaQZ9KB9/8os48800cU84084wcs4408A84404488oBB/KWKeEg6F46cQoE88UEUo8o8UoU0o80M0A8sMo88k8sJB2K8w96xxF+p/ooo88UUUQUcU8oc8oYs0UA8owgwc488KBRv8AGFHg/iPuv6LJPPHFFFNFFPKPPKPFFFALOPJOLBNPDQQctfIfp4ws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”;
contexto.drawImage(imagenCanvas, 0, 0);
De todas maneras, si el tamaño de imagen es muy grande, no te recomiendo guardarlo en base de datos, por el sencillo ejemplo que te he puesto, ocuparía muchísimo y los tiempos se alargan sin necesidad.
Ya me dices si te ha servido 😉