Procesamiento de imágenes en Node.js: bibliotecas Sharp, Jimp y gm

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Trabajo con imágenes en Node.js: resumen de las mejores bibliotecas



En el desarrollo web moderno con Node.js, a menudo surge la necesidad de procesar imágenes mediante programación: cambiar el tamaño, convertir formatos, aplicar marcas de agua u optimizar para acelerar la carga de sitios web. En este artículo, analizaremos las tres bibliotecas más populares para trabajar con imágenes en el entorno Node.js: Sharp, Jimp y gm (GraphicsMagick).



1. Sharp — procesamiento rápido y eficiente



La biblioteca Sharp utiliza el módulo nativo libvips, escrito en C, lo que garantiza el máximo rendimiento. Es ideal para aplicaciones de servidor que necesitan procesar decenas y cientos de imágenes por segundo rápidamente.



Instalación

npm install sharp


Funcionalidades principales y ejemplos

  • Cambio de tamaño — resize(width, height)
  • Conversión de formatos — toFormat('webp')
  • Recorte y rotación — extract(), rotate()
  • Superposición de texto — composite()


Ejemplo: cambio de tamaño y conversión a WebP

const sharp = require('sharp');

sharp('input.jpg') .resize(800, 600) .toFormat('webp') .toFile('output.webp') .then(info => console.log('Listo:', info)) .catch(err => console.error(err));


Ejemplo: creación de miniatura con recorte

const sharp = require('sharp');

sharp('large-photo.jpg') .resize(200, 200, { fit: 'cover' }) .toFile('thumbnail.jpg') .then(() => console.log('Miniatura creada'));


2. Jimp — solución puramente en JavaScript



La biblioteca Jimp (JavaScript Image Manipulation Program) está escrita completamente en JavaScript y no requiere la instalación de dependencias adicionales del sistema. Esto la convierte en una opción ideal para entornos donde no se pueden usar módulos nativos (por ejemplo, algunas plataformas en la nube).



Instalación

npm install jimp


Funcionalidades principales

  • Cambio de tamaño, recorte, rotación
  • Aplicación de efectos de color (escala de grises, inversión)
  • Superposición de texto con selección de fuente
  • Trabajo con transparencia (PNG)


Ejemplo: superposición de texto en una imagen

const Jimp = require('jimp');

Jimp.read('background.png') .then(image => { return Jimp.loadFont(Jimp.FONT_SANS_32_WHITE) .then(font => { image.print(font, 50, 50, '¡Hola, mundo!'); return image.writeAsync('result.png'); }); }) .catch(err => console.error(err));


Ejemplo: creación de escala de grises

const Jimp = require('jimp');

Jimp.read('colorful.jpg') .then(image => { return image .greyscale() .writeAsync('black-white.jpg'); }) .catch(err => console.error(err));


3. gm (GraphicsMagick) — herramienta potente para tareas complejas



La biblioteca gm es un envoltorio para las utilidades del sistema GraphicsMagick o ImageMagick. Proporciona capacidades de procesamiento de imágenes prácticamente ilimitadas, pero requiere la instalación del software correspondiente en el servidor.



Instalación

npm install gm

También es necesario instalar GraphicsMagick o ImageMagick en el sistema (por ejemplo, a través de apt-get, brew o el instalador de Windows).



Funcionalidades principales

  • Soporte para todos los formatos de imagen
  • Superposición compleja de capas y máscaras
  • Corrección de color avanzada
  • Procesamiento por lotes


Ejemplo: superposición de marca de agua

const gm = require('gm');

gm('input.jpg')

Recommendations