Convertir HTML a imagen en JavaScript

Shubham Vora 20 junio 2023
  1. Utilice la biblioteca de JavaScript html2canvas para convertir HTML en imagen
  2. Use la biblioteca de JavaScript dom-to-image para convertir HTML a imagen
Convertir HTML a imagen en JavaScript

Aprenderemos a representar el HTML como una imagen en este artículo. Significa que tomaremos la instantánea 2D de la página web, que contiene HTML, y la mostraremos en la página web o descargaremos la imagen.

Hemos utilizado bibliotecas de JavaScript externas para representar HTML en imágenes en los siguientes métodos.

Utilice la biblioteca de JavaScript html2canvas para convertir HTML en imagen

Hemos utilizado la biblioteca html2canvas en el siguiente ejemplo para convertir HTML en una imagen y representarla en la página web.

Por ejemplo, creamos dos elementos div con diferentes ID, my-div y ShowImage. Tomaremos la instantánea del elemento div con el id my-div y mostraremos la instantánea dentro del elemento div con el id ShowImage.

Además, hemos creado el elemento <button> y hemos agregado el evento onclick para eso. Cuando el usuario haga clic en el botón, llamará a la función convertToImage(), que convertirá HTML en imagen.

<body>
    <div id="my-div">This is sample div element.</div>
    <div id="ShowImage"></div>
    <button onclick="convertToImage()">Convert</button>
</body>

Hemos aplicado algunos estilos a los elementos div en el CSS a continuación. Hemos establecido la altura, el ancho y el color de fondo para los elementos div utilizando las propiedades CSS.

Además, establecemos el margen para todos los elementos div para dejar algo de espacio alrededor.

div {
    display: block;
    margin: 20px;
}
#my-div {
    height: 300px;
    width: 300px;
    background-color: red;
}

Para usar la biblioteca html2canvas, los usuarios deben descargarla a su computadora local desde (https://html2canvas.hertzen.com/). Después de eso, los usuarios pueden agregar la biblioteca al código HTML a través de la etiqueta <script> asignando la ruta correcta del archivo de la biblioteca al atributo src de la etiqueta <script>.

<script src="html2canvas.js" type="text/javascript"></script>

La función convertToImage() contiene el código JavaScript para convertir el HTML en imagen.

En el siguiente código de ejemplo, hemos accedido al elemento div con el id my-div usando su id en JavaScript y aplicado la función html2canvas para capturar la imagen de ese elemento HTML en particular. El canvas almacenará la imagen, y hemos añadido esa imagen al elemento div con el id ShowImage.

<script>
    function convertToImage() {
        html2canvas(document.getElementById("my-div")).then(function (canvas) {
        document.getElementById("ShowImage").appendChild(canvas);
        });
    }
</script>

Producción:

convertir html a imagen - uno

En la animación de salida anterior, los usuarios pueden ver que cuando hacemos clic en el botón convertir, se mostrará la nueva imagen del elemento <div> dentro del cuerpo del documento.

Además, podemos crear el enlace HTML para descargar y guardar localmente la imagen capturada.

Aquí, hemos creado el nuevo elemento <a> usando document.createElement("a"), y lo hemos almacenado dentro de la variable anchor. Además, hemos agregado el elemento <a> al cuerpo del documento usando document.body.appendChild(anchor).

A continuación, le hemos dado el nombre al archivo de imagen descargable usando anchor.download = "sample.jpg", y configuramos el atributo href para el ancla usando la propiedad toDataURL de la variable canvas. Además, hemos establecido el valor _blank para el atributo target de anchor para que la imagen se pueda descargar.

El resultado también muestra que cuando hacemos clic en el botón “convertir”, agrega la imagen del elemento div a la página web y descarga el mismo archivo de imagen a la computadora local.

<script>
    function convertToImage() {
        html2canvas(document.getElementById("my-div")).then(function (canvas) {
        var anchor = document.createElement("a");
        document.body.appendChild(anchor);
        document.getElementById("ShowImage").appendChild(canvas);
        anchor.download = "sample.jpg";
        anchor.href = canvas.toDataURL();
        anchor.target = "_blank";
        anchor.click();
       });
    }
</script>

Producción:

convertir html a imagen - dos

Use la biblioteca de JavaScript dom-to-image para convertir HTML a imagen

El siguiente código HTML es casi el mismo que el utilizado en el ejemplo anterior, que contiene dos elementos div con diferentes valores del atributo id.

<div id="my-div">Demo texts.</div>
<div id="ShowImage"></div>
<button onclick="convertToImage()">Convert to image</button>

El siguiente código CSS contiene el estilo del código HTML, y es casi el mismo que hemos usado dentro del código de ejemplo anterior.

div {
    display: block;
    margin: 20px;
}
#my-div {
    height: 100px;
    width: 100px;
    background-color: blue;
}

Para usar la librería domtoimage, tenemos que descargarla localmente, o podemos usar su CDN. Aquí, los usuarios deben incrustar el siguiente CDN de la biblioteca domtoimage en la sección <head> del código HTML.

<script
      src="https://cdnjs.cloudflare.com/ajax/libs/dom-to-image/2.6.0/dom-to-image.min.js"
      integrity="sha512-01CJ9/g7e8cUmY0DFTMcUw/ikS799FHiOA0eyHsUWfOetgbx/t6oV4otQ5zXKQyIrQGTHSmRVPIgrgLcZi/WMA=="
      crossorigin="anonymous"
      referrerpolicy="no-referrer"
    ></script>

En el siguiente código JavaScript, hemos accedido al elemento div usando su id y lo hemos almacenado en la variable elemento.

A continuación, usamos la biblioteca domtoimage para convertir el HTML en una imagen png. Hemos creado la nueva imagen vacía utilizando el constructor nueva imagen() y la hemos almacenado dentro de la variable nueva imagen.

Además, estamos asignando el valor de URL al atributo src de la variable newImage. Después de eso, agregaremos la nueva imagen a la página web.

Además, hemos usado el bloque catch para manejar los errores.

<script>
    function convertToImage(){
    var element = document.getElementById("my-div");
    domtoimage
        .toPng(element)
        .then(function (URL) {
            var newImg = new Image();
            newImg.src = URL;
            document.getElementById('ShowImage').appendChild(newImg);
        })
        .catch(function (error) {
            console.error("error");
        });
    }
</script>

Producción:

convertir html a imagen - tres

Los usuarios pueden observar que estamos tomando la instantánea del div azul; cada vez que hagamos clic en el botón, nuestro código agregará una nueva instantánea del div azul al cuerpo del documento.

Shubham Vora avatar Shubham Vora avatar

Shubham is a software developer interested in learning and writing about various technologies. He loves to help people by sharing vast knowledge about modern technologies via different platforms such as the DelftStack.com website.

LinkedIn GitHub

Artículo relacionado - HTML Image

Artículo relacionado - HTML Convert