logoImagina

Convierte una Imagen a Escala de Grises con Canvas y HTML5

iconImage
Publicado 2021-05-18
Actualizado el 2023-11-14

Cómo convertir imágenes a escala de grises con jQuery

En este tutorial aprenderemos cómo implementar una funcionalidad que nos permitirá convertir las imágenes de nuestro sitio web de color RGB a escala de grises utilizando JavaScript y diferentes librerías. Aunque no escribiremos directamente la etiqueta <canvas> en nuestro código, la librería que utilizaremos generará dicha etiqueta, por lo que es importante que tengamos definido el DOCTYPE como HTML5.

Requisitos previos

Antes de comenzar a implementar el efecto de escala de grises, asegúrate de tener los siguientes requisitos previos:

  • Conocimientos básicos de HTML, CSS y JavaScript. Te recomendamos consultar nuestro curso de HTML5 y CSS3.
  • Tener instalado jQuery en tu proyecto.
  • Acceso a una conexión a internet para descargar la librería de escala de grises.

¿Qué es el efecto de escala de grises?

El efecto de escala de grises es una técnica que convierte una imagen en su representación en tonos de gris. Esto puede ser útil para resaltar elementos específicos en una página web o crear un estilo visual coherente. Al aplicar este efecto, las imágenes pierden su color original y adoptan un aspecto en blanco y negro.

Configuración del entorno de desarrollo

Para configurar el entorno de desarrollo, sigue estos pasos:

  1. Crea una estructura de archivos básica para tu proyecto web, con los archivos HTML, CSS y JavaScript necesarios.
  2. Descarga la librería jQuery desde https://jquery.com/ y añade el archivo de jQuery a tu proyecto.
  3. Descarga la librería de escala de grises desarrollada por Andrew Pryde desde su repositorio de GitHub.
  4. Coloca el archivo de la librería de escala de grises en la carpeta correspondiente de tu proyecto, por ejemplo, en una carpeta llamada "js".
  5. Asegúrate de vincular correctamente los archivos JavaScript y CSS en tu documento HTML utilizando las etiquetas <script> y <link> respectivamente.

Pasos a seguir

Paso 1: Crear el documento HTML5

Comenzaremos creando un documento HTML5 básico que contendrá las imágenes a las cuales aplicaremos el efecto de escala de grises. Aquí está el código inicial:

<html lang="en">    
  <head>        
    <meta charset="utf-8">        
    <title>jQuery GreyScale Plugin</title>    
  </head>    
  <body>        
    <section>            
      <a href="http://www.imaginagroup.com/">                
        <img src="http://www.imaginagroup.com/wp-content/themes/starkers/images/imaginagroup-logo.png" alt="Image" class="greyScale" />            
      </a>        
    </section>    
  </body>
</html>

Paso 2: Estilos básicos

A continuación, agregaremos algunos estilos básicos para asegurarnos de que las imágenes se muestren correctamente. Puedes usar el siguiente código CSS:

<style>    
  body {  
    background-color: black;
  }
    
  section {      
    background: url('http://www.imaginagroup.com/wp-content/themes/starkers/images/bg-header-footer.png') repeat scroll 0 0 black;      
    height: 100%;      
    width: 100%;    
  }    

  a {      
    display: block;      
    text-align: center;    
  }
</style>

Paso 3: Incluir jQuery y la librería de escala de grises

Para agregar la funcionalidad de escala de grises, debemos incluir primero jQuery y luego la librería descargada en el Paso 1. Asegúrate de tener los archivos JavaScript en la ubicación correcta. Aquí tienes el código HTML actualizado:

<!DOCTYPE html>
<html lang="en">    
  <head>        
    <meta charset="utf-8">        
    <title>jQuery GreyScale Plugin</title>        
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>        
    <script src="js/greyScale.js"></script>    
  </head>    
  <body>        
    <section>            
      <a href="http://www.imaginagroup.com/">                
        <img src="http://www.imaginagroup.com/wp-content/themes/starkers/images/imaginagroup-logo.png" alt="Image" class="greyScale" />            
      </a>        
    </section>    
  </body>


</html>

Paso 4: Aplicar el efecto de escala de grises

Una vez que hemos incluido los archivos JavaScript necesarios, podemos agregar la función de jQuery que nos permitirá aplicar el efecto de escala de grises a las imágenes. Dentro de la función, podemos definir varios parámetros para personalizar el efecto. Aquí está el código JavaScript:

<script>    
  $(function() {        
    // Fade en las imágenes a escala de grises para evitar un salto brusco        
    $('.greyScale').hide().fadeIn(1000);
  });
    
  // Utilizamos window.load para asegurarnos de que las imágenes estén cargadas    
  $(window).load(function () {        
    $('.greyScale').greyScale({            
      // Llamada al plugin con el fadeTime que no viene por defecto (default: 400ms)            
      fadeTime: 500,            
      reverse: false        
    });    
  });
</script>

Recuerda llamar a los archivos JavaScript en el orden correcto: primero jQuery, luego la librería de escala de grises y finalmente nuestra función. En este caso, utilizamos una animación de desvanecimiento (fade) para lograr una transición suave en lugar de un cambio abrupto de color.

Paso 5: Aplicar el efecto de escala de grises a las imágenes

Para finalizar, asegúrate de agregar la clase .greyScale a todas las imágenes a las que deseas aplicar el efecto de escala de grises. Puedes hacerlo mediante la siguiente modificación en el código HTML:

<!DOCTYPE html>
<html lang="en">
     <head>
         <meta charset="utf-8">
         <title>jQuery GreyScale Plugin</title>
         <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
         <script src="js/greyScale.js"></script>
         <style>
             body { background-color: black; }
         
             section {
               background: url('http://www.imaginagroup.com/wp-content/themes/starkers/images/bg-header-footer.png') repeat scroll 0 0 black;
               height: 100%;
               width: 100%;
             }
             
             a {
               display: block;
               text-align: center;
             }
         </style>
     </head>
    <body>
         <section>
             <a href="http://www.imaginagroup.com/">
               <img src="http://www.imaginagroup.com/wp-content/themes/starkers/images/imaginagroup-logo.png" alt="Image" class="greyScale" />
             </a>
             <script>
               $(function() {
                 // Fade en las imágenes a escala de grises para evitar un salto brusco
                 $('.greyScale').hide().fadeIn(1000);
               });
               // Utilizamos window.load para asegurarnos de que las imágenes estén cargadas
               $(window).load(function () {
                 $('.greyScale').greyScale({
                   // Llamada al plugin con el fadeTime que no viene por defecto (default: 400ms)
                   fadeTime: 500,
                   reverse: false
                 });
               });
             </script>
         </section>
     </body>
 </html>

Personalización del efecto

La librería de escala de grises permite personalizar el efecto según tus necesidades. A continuación se muestra un ejemplo de cómo modificar algunos parámetros en el código JavaScript para personalizar el efecto:

<script>
  $(function() {
    $('.greyScale').hide().fadeIn(1000);
  });

  $(window).load(function () {
    $('.greyScale').greyScale({
      fadeTime: 500,  // Velocidad de transición en milisegundos
      reverse: false, // Invertir el efecto (true o false)
      opacity: 0.6    // Opacidad inicial de la imagen en escala de grises
    });
  });
</script>

En este ejemplo, se ha cambiado el tiempo de transición a 500 milisegundos, se ha desactivado la inversión del efecto y se ha ajustado la opacidad inicial de la imagen a 0.6. Puedes experimentar con estos valores y otros parámetros disponibles para lograr el resultado deseado.

Uso avanzado de la librería

La librería de escala de grises ofrece funciones adicionales que permiten un uso más avanzado. Por ejemplo, puedes aplicar el efecto de escala de grises solo a áreas específicas de una imagen o combinar múltiples efectos. Aquí hay un ejemplo de cómo utilizar la función greyScaleRegion para aplicar el efecto solo en un área rectangular de una imagen:

<script>
  $(window).load(function () {
    $('.greyScale').greyScale({
      fadeTime: 500,
      reverse: false
    });

    $('.greyScale').greyScaleRegion({
      x: 50,       

 // Coordenada x del área rectangular
      y: 50,        // Coordenada y del área rectangular
      width: 200,   // Ancho del área rectangular
      height: 150   // Altura del área rectangular
    });
  });
</script>

En este ejemplo, se ha seleccionado un área rectangular con una coordenada x de 50, una coordenada y de 50, un ancho de 200 y una altura de 150. Puedes ajustar estas coordenadas y dimensiones según tus necesidades.

Consideraciones de accesibilidad

Al aplicar el efecto de escala de grises, es importante tener en cuenta la accesibilidad. Asegúrate de seguir estas consideraciones:

  • Proporciona un texto alternativo adecuado para las imágenes, utilizando el atributo alt en la etiqueta <img>. Este texto se mostrará cuando la imagen no esté disponible o para las personas con discapacidades visuales que utilizan lectores de pantalla.
  • Verifica que el contenido relacionado con las imágenes siga siendo accesible. Por ejemplo, si una imagen es un enlace, asegúrate de que el texto del enlace sea descriptivo y proporcione información suficiente para comprender el destino del enlace.
  • Realiza pruebas de accesibilidad para garantizar que el efecto de escala de grises no afecte negativamente la experiencia de los usuarios con discapacidades visuales. Utiliza herramientas de evaluación de accesibilidad o solicita la opinión de personas con discapacidades visuales para obtener retroalimentación sobre la accesibilidad de tu sitio web.

Teniendo en cuenta estas consideraciones, puedes aplicar el efecto de escala de grises de manera responsable y garantizar una experiencia inclusiva para todos los usuarios.

Conclusión

En este tutorial, hemos aprendido cómo implementar el efecto de escala de grises en imágenes utilizando jQuery y una librería externa. Siguiendo los pasos descritos, ahora puedes agregar este efecto a las imágenes de tu sitio web para mejorar su apariencia visual. Recuerda personalizar los parámetros según tus necesidades y experimentar con diferentes configuraciones para lograr el resultado deseado. ¡Diviértete explorando las posibilidades que ofrece esta funcionalidad!

Si quieres seguir aprendiendo sobre HTML5 y CSS3 y explorar todas sus funcionalidades, te recomendamos consultar la página de nuestro curso de HTML5 y CSS3.

iconClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClient