En mi blog te he mostrado cómo descargar un canvas de HTML y JavaScript como PNG, pero no te mostré cómo hacerlo en otro formato.

Por ello es que en este post te mostraré cómo descargar un canvas como imagen ya sea PNG o JPG, respetando el tipo MIME image/jpeg o image/png.

Descargar canvas como PNG

Ya dediqué un post a cómo descargar un canvas como PNG.

Canvas a JPG con JavaScript

Para convertir un canvas a JPG simplemente invocamos a toDataURL pero le pasamos los dos argumentos que son opcionales: el MIME y la calidad.

En este caso la calidad va desde 0 a 1, siendo el 1 la máxima calidad, 0.5 una calidad media y el 0.1 una calidad relativamente mínima.

Aquí un ejemplo completo:

<!DOCTYPE html>
<html>

<head>
	<meta charset="utf-8">
	<meta name="viewport" content="width=device-width">
	<title>Canvas a imagen</title>
</head>

<body>
	<h1>Canvas a JPG</h1>
	<canvas id="canvas"></canvas>
	<button id="btnDescargar">Descargar</button>
	<script>
		const $canvas = document.querySelector("#canvas"),
			$btnDescargar = document.querySelector("#btnDescargar");

		// Lo siguiente dibuja en el canvas, no tiene que ver con el tutorial, solo es demostración
		const contexto = $canvas.getContext("2d");
		contexto.strokeStyle = "red";
		contexto.beginPath();
		contexto.arc(95, 50, 40, 0, 2 * Math.PI);
		contexto.stroke();

		// Listener del botón
		$btnDescargar.addEventListener("click", () => {
			// Crear un elemento <a>
			let enlace = document.createElement('a');
			// El título
			enlace.download = "Canvas como imagen.jpg";
			// Convertir la imagen a Base64 y ponerlo en el enlace
			enlace.href = canvas.toDataURL("image/jpeg", 1);
			// Hacer click en él
			enlace.click();
		});
	</script>
</body>

</html>

La verdadera descarga de la imagen está en la línea 26. Para convertirla a imagen JPG simplemente indicamos el mime en la línea 32.

Luego de eso creamos un enlace y colocamos su href como la imagen en base64.

Por cierto quiero avisarte que si la imagen tiene fondo transparente el mismo será convertido a un fondo negro.

Si el post ha sido de tu agrado te invito a que me sigas para saber cuando haya escrito un nuevo post, haya actualizado algún sistema o publicado un nuevo software. Facebook | X | Instagram | Telegram | También estoy a tus órdenes para cualquier contratación en mi página de contacto