Skip to content

Constructor de Sharp ​

Sharp es una biblioteca de procesamiento de imágenes de alto rendimiento para Node.js. El constructor es el punto de partida para usar Sharp.

Uso Básico ​

javascript
import sharp from 'sharp';

// Crear instancia de Sharp desde ruta de archivo
const image = sharp('input.jpg');

// Crear instancia de Sharp desde Buffer
const image = sharp(inputBuffer);

// Crear instancia de Sharp desde Stream
const image = sharp(inputStream);

Parámetros del Constructor ​

Fuentes de Entrada ​

El constructor de Sharp acepta múltiples fuentes de entrada:

javascript
// Ruta de archivo
sharp('input.jpg')

// Buffer
sharp(buffer)

// Stream
sharp(stream)

// URL
sharp('https://example.com/image.jpg')

// Múltiples fuentes de entrada
sharp(['input1.jpg', 'input2.jpg'])

Objeto de Opciones ​

javascript
sharp(input, {
  // Opciones de entrada
  input: {
    failOnError: false,
    limitInputPixels: 268402689,
    sequentialRead: false
  },
  
  // Opciones de páginas (para imágenes multipágina)
  pages: -1,
  
  // Opciones raw
  raw: {
    width: 1920,
    height: 1080,
    channels: 3
  }
})

Opciones de Entrada ​

failOnError ​

  • Tipo: boolean
  • Valor por defecto: true
  • Descripción: Si lanzar excepción cuando se encuentra un error
javascript
sharp('input.jpg', { failOnError: false })
  .resize(300, 200)
  .toFile('output.jpg')
  .catch(err => console.log('Procesamiento fallido:', err));

limitInputPixels ​

  • Tipo: number
  • Valor por defecto: 268402689 (16384 x 16384)
  • Descripción: Limitar el número de píxeles de la imagen de entrada
javascript
sharp('large-image.jpg', { 
  limitInputPixels: 100000000 
})

sequentialRead ​

  • Tipo: boolean
  • Valor por defecto: false
  • Descripción: Si leer los datos de imagen secuencialmente
javascript
sharp('input.jpg', { sequentialRead: true })

Imágenes Multipágina ​

Para imágenes multipágina (como TIFF, PDF), puedes especificar las páginas a procesar:

javascript
// Procesar todas las páginas
sharp('multi-page.tiff', { pages: -1 })

// Procesar página específica (comienza desde 0)
sharp('multi-page.tiff', { pages: 0 })

// Procesar múltiples páginas
sharp('multi-page.tiff', { pages: [0, 2, 4] })

Datos de Imagen Raw ​

Al procesar datos de imagen raw, necesitas especificar las dimensiones y el número de canales:

javascript
sharp(rawBuffer, {
  raw: {
    width: 1920,
    height: 1080,
    channels: 3  // RGB
  }
})

Manejo de Errores ​

javascript
try {
  const image = sharp('input.jpg');
  await image.toFile('output.jpg');
} catch (error) {
  console.error('Procesamiento de imagen fallido:', error.message);
}

Consejos de Rendimiento ​

  1. Reutilizar instancias: Reutiliza instancias de Sharp siempre que sea posible
  2. Procesamiento por streams: Para archivos grandes, usa procesamiento por streams
  3. Gestión de memoria: Libera instancias innecesarias a tiempo
javascript
// Buena práctica
const sharp = require('sharp');
const image = sharp('input.jpg');

// Procesar múltiples operaciones
await image
  .resize(300, 200)
  .jpeg({ quality: 80 })
  .toFile('output1.jpg');

await image
  .resize(150, 100)
  .png()
  .toFile('output2.jpg');

Enlaces Relacionados ​

Liberado bajo la Licencia Apache 2.0.