Inicio Rápido
Esta guía te ayudará a comenzar rápidamente con Sharp y aprender operaciones básicas de procesamiento de imágenes.
Uso Básico
Importar Sharp
javascript
import sharp from 'sharp';O usar CommonJS:
javascript
const sharp = require('sharp');Leer Imagen
Sharp soporta múltiples formatos de entrada:
javascript
// Leer desde archivo
const image = sharp('input.jpg');
// Leer desde Buffer
const image = sharp(buffer);
// Leer desde Stream
const image = sharp(stream);Operaciones Básicas
Redimensionar
javascript
// Redimensionar a tamaño especificado
await sharp('input.jpg')
.resize(300, 200)
.toFile('output.jpg');
// Mantener relación de aspecto
await sharp('input.jpg')
.resize(300, null) // Ancho 300, alto automático
.toFile('output.jpg');
// Usar diferentes modos de ajuste
await sharp('input.jpg')
.resize(300, 200, {
fit: 'cover', // Recortar para ajustar
position: 'center' // Recortar centrado
})
.toFile('output.jpg');Conversión de Formatos
javascript
// Convertir a JPEG
await sharp('input.png')
.jpeg({ quality: 80 })
.toFile('output.jpg');
// Convertir a WebP
await sharp('input.jpg')
.webp({ quality: 80 })
.toFile('output.webp');
// Convertir a PNG
await sharp('input.jpg')
.png({ compressionLevel: 9 })
.toFile('output.png');Recortar
javascript
// Recortar región especificada
await sharp('input.jpg')
.extract({ left: 100, top: 100, width: 200, height: 200 })
.toFile('cropped.jpg');Rotar
javascript
// Rotar 90 grados
await sharp('input.jpg')
.rotate(90)
.toFile('rotated.jpg');Operaciones Avanzadas
Efectos de Filtro
javascript
// Desenfoque
await sharp('input.jpg')
.blur(5)
.toFile('blurred.jpg');
// Nitidez
await sharp('input.jpg')
.sharpen()
.toFile('sharpened.jpg');
// Escala de grises
await sharp('input.jpg')
.grayscale()
.toFile('grayscale.jpg');Ajuste de Color
javascript
// Ajustar brillo
await sharp('input.jpg')
.modulate({ brightness: 1.2 })
.toFile('bright.jpg');
// Ajustar contraste
await sharp('input.jpg')
.modulate({ contrast: 1.5 })
.toFile('contrast.jpg');
// Ajustar saturación
await sharp('input.jpg')
.modulate({ saturation: 0.8 })
.toFile('desaturated.jpg');Opciones de Salida
Guardar en Archivo
javascript
await sharp('input.jpg')
.resize(300, 200)
.toFile('output.jpg');Salida a Buffer
javascript
const buffer = await sharp('input.jpg')
.resize(300, 200)
.jpeg()
.toBuffer();Salida a Stream
javascript
sharp('input.jpg')
.resize(300, 200)
.jpeg()
.pipe(fs.createWriteStream('output.jpg'));Manejo de Errores
javascript
try {
await sharp('input.jpg')
.resize(300, 200)
.toFile('output.jpg');
} catch (error) {
console.error('Procesamiento de imagen fallido:', error);
}Optimización de Rendimiento
Procesamiento por Streams
javascript
// Usar streams al procesar archivos grandes
const pipeline = sharp()
.resize(300, 200)
.jpeg({ quality: 80 });
fs.createReadStream('large-input.jpg')
.pipe(pipeline)
.pipe(fs.createWriteStream('output.jpg'));Procesamiento Concurrente
javascript
// Procesar múltiples imágenes simultáneamente
const promises = images.map(image =>
sharp(image)
.resize(300, 200)
.jpeg()
.toBuffer()
);
const results = await Promise.all(promises);Ejemplo Completo
javascript
import sharp from 'sharp';
import fs from 'fs';
async function processImage() {
try {
// Crear miniatura
await sharp('input.jpg')
.resize(150, 150, { fit: 'cover' })
.jpeg({ quality: 90 })
.toFile('thumbnail.jpg');
// Crear imagen de tamaño medio
await sharp('input.jpg')
.resize(800, 600, { fit: 'inside' })
.webp({ quality: 80 })
.toFile('medium.webp');
// Crear imagen de tamaño grande
await sharp('input.jpg')
.resize(1920, 1080, { fit: 'inside' })
.jpeg({ quality: 85 })
.toFile('large.jpg');
console.log('¡Procesamiento de imágenes completado!');
} catch (error) {
console.error('Procesamiento fallido:', error);
}
}
processImage();Próximos Pasos
Ahora que has aprendido el uso básico de Sharp, puedes:
- Ver Documentación de API para conocer todos los métodos disponibles
- Aprender Ejemplos Avanzados para dominar más técnicas
- Entender Optimización de Rendimiento para mejorar la eficiencia de procesamiento