Constructeur Sharp
Sharp est une bibliothèque de traitement d'images haute performance pour Node.js. Le constructeur est le point de départ pour utiliser Sharp.
Utilisation de base
javascript
import sharp from 'sharp';
// Créer une instance Sharp à partir d'un chemin de fichier
const image = sharp('input.jpg');
// Créer une instance Sharp à partir d'un Buffer
const image = sharp(inputBuffer);
// Créer une instance Sharp à partir d'un Stream
const image = sharp(inputStream);Paramètres du constructeur
Source d'entrée
Le constructeur Sharp accepte plusieurs types de sources d'entrée :
javascript
// Chemin de fichier
sharp('input.jpg')
// Buffer
sharp(buffer)
// Stream
sharp(stream)
// URL
sharp('https://example.com/image.jpg')
// Plusieurs sources d'entrée
sharp(['input1.jpg', 'input2.jpg'])Objet d'options
javascript
sharp(input, {
// Options d'entrée
input: {
failOnError: false,
limitInputPixels: 268402689,
sequentialRead: false
},
// Options de page (pour les images multi-pages)
pages: -1,
// Options brutes
raw: {
width: 1920,
height: 1080,
channels: 3
}
})Options d'entrée
failOnError
- Type:
boolean - Valeur par défaut:
true - Description: Indique si une exception doit être levée en cas d'erreur
javascript
sharp('input.jpg', { failOnError: false })
.resize(300, 200)
.toFile('output.jpg')
.catch(err => console.log('Échec du traitement:', err));limitInputPixels
- Type:
number - Valeur par défaut:
268402689(16384 x 16384) - Description: Limite le nombre de pixels de l'image d'entrée
javascript
sharp('large-image.jpg', {
limitInputPixels: 100000000
})sequentialRead
- Type:
boolean - Valeur par défaut:
false - Description: Indique si les données d'image doivent être lues séquentiellement
javascript
sharp('input.jpg', { sequentialRead: true })Images multi-pages
Pour les images multi-pages (comme TIFF, PDF), vous pouvez spécifier les pages à traiter :
javascript
// Traiter toutes les pages
sharp('multi-page.tiff', { pages: -1 })
// Traiter une page spécifique (commence à 0)
sharp('multi-page.tiff', { pages: 0 })
// Traiter plusieurs pages
sharp('multi-page.tiff', { pages: [0, 2, 4] })Données d'image brutes
Lors du traitement de données d'image brutes, vous devez spécifier les dimensions et le nombre de canaux :
javascript
sharp(rawBuffer, {
raw: {
width: 1920,
height: 1080,
channels: 3 // RGB
}
})Gestion des erreurs
javascript
try {
const image = sharp('input.jpg');
await image.toFile('output.jpg');
} catch (error) {
console.error('Échec du traitement d\'image:', error.message);
}Conseils de performance
- Réutiliser les instances: Réutilisez les instances Sharp autant que possible
- Traitement en flux: Pour les gros fichiers, utilisez le traitement en flux
- Gestion de la mémoire: Libérez les instances inutiles en temps opportun
javascript
// Bonne pratique
const sharp = require('sharp');
const image = sharp('input.jpg');
// Traiter plusieurs opérations
await image
.resize(300, 200)
.jpeg({ quality: 80 })
.toFile('output1.jpg');
await image
.resize(150, 100)
.png()
.toFile('output2.jpg');