Introducción: ¿Qué es Sharp y para qué sirve?
\n\nSharp es una biblioteca de alto rendimiento para el procesamiento de imágenes, escrita en C++ y que proporciona una API conveniente para Node.js. Permite convertir imágenes en formatos JPEG, PNG, WebP, AVIF, TIFF y GIF a otros formatos, cambiar su tamaño, recortar, rotar, agregar efectos y mucho más.
\n\nLa principal ventaja de Sharp es la velocidad. La biblioteca utiliza las bibliotecas nativas libvips, lo que la hace varias veces más rápida que alternativas (como Jimp o gm). Es ideal para:
\n- \n
- Servidores web y API — procesamiento dinámico de avatares, vistas previas, optimización de imágenes antes de la carga. \n
- Procesamiento por lotes — conversión de miles de imágenes al formato y tamaño deseados. \n
- Creación de miniaturas y galerías — generación rápida de thumbnails. \n
- Optimización del peso de las imágenes — compresión sin pérdida de calidad (o con pérdida controlada). \n
Sharp funciona con buffers, flujos (streams) y archivos, lo que la hace flexible para la integración en cualquier aplicación Node.js.
\n\nInstalación
\n\nLa instalación de Sharp se realiza a través de npm. La biblioteca requiere Node.js versión 12.13.0 o superior (se recomienda 14+).
\n\nnpm install sharp\n\nSi usas yarn:
\n\nyarn add sharp\n\nImportante: Sharp compila módulos nativos durante la instalación. Si tienes errores, asegúrate de tener instalados build-essential (en Linux) o Xcode Command Line Tools (en macOS). Para Windows, normalmente son suficientes las Visual Studio Build Tools.
\n\nDespués de la instalación, importa la biblioteca en tu proyecto:
\n\nconst sharp = require('sharp');\n\nInicio rápido
\n\nEscribamos un script simple que cargue una imagen, la reduzca a un ancho de 300 píxeles (manteniendo la proporción) y la guarde en formato WebP.
\n\nconst sharp = require('sharp');\nconst path = require('path');\n\nasync function quickStart() {\n try {\n await sharp('input.jpg')\n .resize(300) // Ancho 300px, la altura se ajustará automáticamente\n .webp({ quality: 80 }) // Convertir a WebP con calidad 80%\n .toFile('output.webp');\n \n console.log('¡Imagen procesada exitosamente!');\n } catch (error) {\n console.error('Error:', error);\n }\n}\n\nquickStart();\n\nEste ejemplo demuestra el encadenamiento de métodos (chaining), que es la base del trabajo con Sharp. Cada método devuelve una nueva instancia de Sharp, lo que permite aplicar transformaciones secuencialmente.
\n\nMétodos y funciones principales
\n\nA continuación se presentan 10 métodos clave de Sharp con descripción detallada, parámetros y ejemplos de código.
\n\n1. resize() — Cambiar el tamaño de la imagen
\nQué hace: Cambia el ancho y/o alto de la imagen. Puede recortar o ajustar la imagen dentro de los límites especificados.
\nParámetros:
\n- \n
width(number, opcional) — nuevo ancho en píxeles. \n height(number, opcional) — nuevo alto en píxeles. \n options(object, opcional):\n- \n
fit(string) — modo de ajuste: 'cover' (rellenar, recortando el exceso), 'contain' (ajustar completamente), 'fill' (estirar), 'inside' (reducir para que quepa), 'outside' (ampliar hasta salir de los bordes). Por defecto 'cover'. \n position(string) — posición al recortar: 'center', 'top', 'left', 'right', 'bottom', etc. \n withoutEnlargement(boolean) — prohibir el aumento de la imagen. \n
\n
Ejemplo:
\n// Reducir a 200x200, recortando desde el centro\nawait sharp También en la biblioteca
Trabajo con CSV en Swift (iOS/macOS): bibliotecas y ejemplos
Crypto-js para JavaScript (Node.js): guía completa con ejemplos
Cliente Elasticsearch para Kotlin: integración, ejemplos y capacidades
Monitoreo de aplicaciones PHP: herramientas y bibliotecas para el seguimiento del rendimiento
Cliente HTTP para JavaScript (Node.js): top bibliotecas para trabajar con API