Artículos
HTML5

Descargar un Canvas a una imagen con HTML5

28/Sep/2012

En el artículo Exportar el contenido de un Canvas HTML5 a una imagen veíamos como podíamos convertir el contenido del Canvas en una imagen y cargar dicha imagen dentro de un elemento IMG de nuestra página. En este vamos a ver como podemos descargar el contenido del Canvas a un fichero.

El primer paso será la conversión del Canvas a un formato imagen, de igual forma que lo hicimos al Exportar el contenido de un Canvas HTML5 a una imagen vamos a utilizar el método .toDataURL para extraer el contenido del Canvas en Base64.

var dato = canvas.toDataURL("image/png");

Pero en este caso no vamos a mover este contenido al elemento IMG, si no que lo vamos a poner en la URL del navegador. En este caso accedemos al objeto location.href

document.location.href = dato;

Esto provocará, ¿la descarga?. Ummmmm, la verdad que no. Si lo ponemos en la imagen en la URL lo que sucederá es que se cargará la imagen dentro del área de visualización del navegador.

Es por ello que antes de subirla a la URL vamos a manipular su contenido y dónde esté el tipo de mimetype de la imagen, es decir «image/jpeg» vamos a poner «image/octet-stream».

dato = dato.replace("image/png", "image/octet-stream");

Ahora, al poner la imagen en la URL, el navegador decidirá, al encontrarse el mimetype «image/octet-stream», descargar la imagen.

El código completo sería:

var jpeg = document.getElementById("jpeg");
jpeg.addEventListener("click",function(){	
  var dato = canvas.toDataURL("image/jpeg");
  dato = dato.replace("image/jpeg", "image/octet-stream");
  document.location.href = dato;	
},false);

Con estas tres sencillas líneas de código podemos descargar el contenido de un Canvas a una imagen con HTML5.

Vídeos sobre HTML5

Disfruta también de nuestros artículos sobre HTML5 en formato vídeo. Aprovecha y suscribete a nuestro canal.

Test HTML5

¿Te atreves a probar tus habilidades y conocimiento en HTML5 con nuestro test?

Test HTML5
Suscribir
Notificar de
guest
4 Comentarios
Recientes
Anteriores Más votados
Opiniones integradas
Ver todos los comentarios