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
- Riutilizzare le istanze: Riutilizzare le istanze Sharp quando possibile
- Elaborazione streaming: Per file grandi, utilizzare l'elaborazione streaming
- 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');