Guida Rapida
Questa guida ti aiuterà a iniziare rapidamente con Sharp e imparare le operazioni base di elaborazione immagini.
Utilizzo di base
Importare Sharp
javascript
import sharp from 'sharp';Oppure usando CommonJS:
javascript
const sharp = require('sharp');Leggere immagini
Sharp supporta vari formati di input:
javascript
// Leggere da file
const image = sharp('input.jpg');
// Leggere da Buffer
const image = sharp(buffer);
// Leggere da Stream
const image = sharp(stream);Operazioni di base
Ridimensionamento
javascript
// Ridimensionare a dimensioni specificate
await sharp('input.jpg')
.resize(300, 200)
.toFile('output.jpg');
// Mantenere proporzioni
await sharp('input.jpg')
.resize(300, null) // Larghezza 300, altezza automatica
.toFile('output.jpg');
// Usare diverse modalità di adattamento
await sharp('input.jpg')
.resize(300, 200, {
fit: 'cover', // Ritagliare per adattarsi
position: 'center' // Ritaglio centrato
})
.toFile('output.jpg');Conversione formato
javascript
// Convertire in JPEG
await sharp('input.png')
.jpeg({ quality: 80 })
.toFile('output.jpg');
// Convertire in WebP
await sharp('input.jpg')
.webp({ quality: 80 })
.toFile('output.webp');
// Convertire in PNG
await sharp('input.jpg')
.png({ compressionLevel: 9 })
.toFile('output.png');Ritaglio
javascript
// Ritagliare area specificata
await sharp('input.jpg')
.extract({ left: 100, top: 100, width: 200, height: 200 })
.toFile('cropped.jpg');Rotazione
javascript
// Ruotare 90 gradi
await sharp('input.jpg')
.rotate(90)
.toFile('rotated.jpg');Operazioni avanzate
Effetti filtro
javascript
// Sfocatura
await sharp('input.jpg')
.blur(5)
.toFile('blurred.jpg');
// Nitidezza
await sharp('input.jpg')
.sharpen()
.toFile('sharpened.jpg');
// Scala di grigi
await sharp('input.jpg')
.grayscale()
.toFile('grayscale.jpg');Regolazione colore
javascript
// Regolare luminosità
await sharp('input.jpg')
.modulate({ brightness: 1.2 })
.toFile('bright.jpg');
// Regolare contrasto
await sharp('input.jpg')
.modulate({ contrast: 1.5 })
.toFile('contrast.jpg');
// Regolare saturazione
await sharp('input.jpg')
.modulate({ saturation: 0.8 })
.toFile('desaturated.jpg');Opzioni output
Salvare su file
javascript
await sharp('input.jpg')
.resize(300, 200)
.toFile('output.jpg');Output su Buffer
javascript
const buffer = await sharp('input.jpg')
.resize(300, 200)
.jpeg()
.toBuffer();Output su Stream
javascript
sharp('input.jpg')
.resize(300, 200)
.jpeg()
.pipe(fs.createWriteStream('output.jpg'));Gestione errori
javascript
try {
await sharp('input.jpg')
.resize(300, 200)
.toFile('output.jpg');
} catch (error) {
console.error('Elaborazione immagine fallita:', error);
}Ottimizzazione prestazioni
Elaborazione streaming
javascript
// Usare stream per file grandi
const pipeline = sharp()
.resize(300, 200)
.jpeg({ quality: 80 });
fs.createReadStream('large-input.jpg')
.pipe(pipeline)
.pipe(fs.createWriteStream('output.jpg'));Elaborazione concorrente
javascript
// Elaborare più immagini simultaneamente
const promises = images.map(image =>
sharp(image)
.resize(300, 200)
.jpeg()
.toBuffer()
);
const results = await Promise.all(promises);Esempio completo
javascript
import sharp from 'sharp';
import fs from 'fs';
async function processImage() {
try {
// Creare miniatura
await sharp('input.jpg')
.resize(150, 150, { fit: 'cover' })
.jpeg({ quality: 90 })
.toFile('thumbnail.jpg');
// Creare immagine dimensione media
await sharp('input.jpg')
.resize(800, 600, { fit: 'inside' })
.webp({ quality: 80 })
.toFile('medium.webp');
// Creare immagine grande
await sharp('input.jpg')
.resize(1920, 1080, { fit: 'inside' })
.jpeg({ quality: 85 })
.toFile('large.jpg');
console.log('Elaborazione immagini completata!');
} catch (error) {
console.error('Elaborazione fallita:', error);
}
}
processImage();Prossimi passi
Ora che hai imparato l'utilizzo di base di Sharp, puoi:
- Consultare la documentazione API per conoscere tutti i metodi disponibili
- Imparare dagli esempi avanzati per padroneggiare più tecniche
- Comprendere l'ottimizzazione prestazioni per migliorare l'efficienza di elaborazione