CompressorJS es una biblioteca de JavaScript que permite comprimir imágenes directamente en el lado del cliente. Aprovecha la API nativa de canvas para realizar compresión con pérdida de manera asincrónica, lo que garantiza un procesamiento eficiente sin bloquear la interfaz de usuario.
Características y beneficios
Esta herramienta destaca por varias razones técnicas:
- Ejecuta la compresión en el navegador, disminuyendo la carga en el servidor.
- Utiliza procesamiento asincrónico para mantener la fluidez de la aplicación.
- Ofrece configuraciones detalladas para ajustar calidad, dimensiones y formato de imagen.
- Mantiene compatibiildad con navegadores modernos y algunas versiones anteriores.
Implementación
Para integrar CompressorJS en un proyecto, se puede instalar mediante gestor de paquetes:
npm install compressorjs
Otra opción es incluirlo directamente desde un CDN:
<script src="https://unpkg.com/compressorjs/dist/compressor.min.js"></script>
Ejemplo de uso
El siguiente código ilustra cómo comprimir un archivo de imagen seleccionado por el usuario:
import Compressor from 'compressorjs';
const imagenSubida = document.querySelector('#input-imagen').files[0];
new Compressor(imagenSubida, {
quality: 0.7,
success(imagenOptimizada) {
console.log('La compresión se realizó correctamente.');
// Continuar con el procesamiento de la imagen
},
failure(error) {
console.error('Ocurrió un error durante la compresión:', error.message);
},
});
Parámetros de configuración
Algunas opciones clave para personalizar la compresión:
- quality: Define el nivel de calidad de la imagen resultante (valores entre 0 y 1). Rangos como 0.6 a 0.8 suelen ofrecer un buen equilibrio.
- maxWidth y maxHeight: Establecen límites máximos para las dimensiones de la imagen comprimida.
- convertTypes: Permite cambiar el formato de salida a JPEG, PNG o WebP según sea necesario.
Casos de uso comunes
Esta biblioteca es aplicable en escenarios como:
- Subida de imágenes de perfil, donde es esencial reducir el tamaño del archivo para una trensferencia rápida.
- Gestión de imágenes en plataformas de e-commerce para mejorar el rendimiento de carga.
- Optimizcaión en aplicaciones móviles donde el ancho de banda puede ser limitado.
Funcionalidades extendidas
CompressorJS proporciona ganchos como beforeDraw y drew para intervenir en el proceso de compresión. También maneja la orientación EXIF de las imágenes de forma automática.
Recomendaciones técnicas
Para archivos de gran tamaño (superiores a 10MB), conviene deshabilitar la verificación de orientación para prevenir problemas de memoria. Asimismo, usar convertSize facilita la conversión automática de formatos específicos.
Organización del código fuente
La estructura del proyecto incluye directorios como src/ para el código original, dist/ para los archivos compilados, docs/ para documentación y test/ para pruebas unitarias.