Skip to content

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 ​

  1. Réutiliser les instances: Réutilisez les instances Sharp autant que possible
  2. Traitement en flux: Pour les gros fichiers, utilisez le traitement en flux
  3. 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');

Liens connexes ​

Distribué sous licence Apache 2.0.