Skip to content

Costruttore Sharp

Sharp è una libreria ad alte prestazioni per l'elaborazione di immagini per Node.js. Il costruttore è il punto di partenza per utilizzare Sharp.

Utilizzo di base

javascript
import sharp from 'sharp';

// Creare un'istanza Sharp da un percorso file
const image = sharp('input.jpg');

// Creare un'istanza Sharp da un Buffer
const image = sharp(inputBuffer);

// Creare un'istanza Sharp da uno Stream
const image = sharp(inputStream);

Parametri del costruttore

Sorgenti di input

Il costruttore Sharp accetta diverse sorgenti di input:

javascript
// Percorso file
sharp('input.jpg')

// Buffer
sharp(buffer)

// Stream
sharp(stream)

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

// Sorgenti multiple
sharp(['input1.jpg', 'input2.jpg'])

Oggetto opzioni

javascript
sharp(input, {
  // Opzioni di input
  input: {
    failOnError: false,
    limitInputPixels: 268402689,
    sequentialRead: false
  },
  
  // Opzioni pagine (per immagini multipagina)
  pages: -1,
  
  // Opzioni raw
  raw: {
    width: 1920,
    height: 1080,
    channels: 3
  }
})

Opzioni di input

failOnError

  • Tipo: boolean
  • Valore predefinito: true
  • Descrizione: Se lanciare un'eccezione quando si verifica un errore
javascript
sharp('input.jpg', { failOnError: false })
  .resize(300, 200)
  .toFile('output.jpg')
  .catch(err => console.log('Elaborazione fallita:', err));

limitInputPixels

  • Tipo: number
  • Valore predefinito: 268402689 (16384 x 16384)
  • Descrizione: Limita il numero di pixel dell'immagine di input
javascript
sharp('large-image.jpg', { 
  limitInputPixels: 100000000 
})

sequentialRead

  • Tipo: boolean
  • Valore predefinito: false
  • Descrizione: Se leggere i dati dell'immagine in sequenza
javascript
sharp('input.jpg', { sequentialRead: true })

Immagini multipagina

Per immagini multipagina (come TIFF, PDF), è possibile specificare le pagine da elaborare:

javascript
// Elaborare tutte le pagine
sharp('multi-page.tiff', { pages: -1 })

// Elaborare una pagina specifica (inizia da 0)
sharp('multi-page.tiff', { pages: 0 })

// Elaborare più pagine
sharp('multi-page.tiff', { pages: [0, 2, 4] })

Dati immagine raw

Quando si elaborano dati immagine raw, è necessario specificare dimensioni e numero di canali:

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

Gestione errori

javascript
try {
  const image = sharp('input.jpg');
  await image.toFile('output.jpg');
} catch (error) {
  console.error('Elaborazione immagine fallita:', error.message);
}

Suggerimenti per le prestazioni

  1. Riutilizzare le istanze: Riutilizzare le istanze Sharp quando possibile
  2. Elaborazione streaming: Per file grandi, utilizzare l'elaborazione streaming
  3. Gestione memoria: Liberare tempestivamente le istanze non necessarie
javascript
// Buona pratica
const sharp = require('sharp');
const image = sharp('input.jpg');

// Elaborare più operazioni
await image
  .resize(300, 200)
  .jpeg({ quality: 80 })
  .toFile('output1.jpg');

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

Rilasciato sotto licenza Apache 2.0.