Skip to content

Démarrage rapide

Ce guide vous aidera à démarrer rapidement avec Sharp et à apprendre les opérations de base de traitement d'image.

Utilisation de base

Importer Sharp

javascript
import sharp from 'sharp';

Ou utilisez CommonJS :

javascript
const sharp = require('sharp');

Lire une image

Sharp supporte plusieurs formats d'entrée :

javascript
// Lire depuis un fichier
const image = sharp('input.jpg');

// Lire depuis un Buffer
const image = sharp(buffer);

// Lire depuis un Stream
const image = sharp(stream);

Opérations de base

Redimensionner

javascript
// Redimensionner aux dimensions spécifiées
await sharp('input.jpg')
  .resize(300, 200)
  .toFile('output.jpg');

// Conserver le ratio d'aspect
await sharp('input.jpg')
  .resize(300, null) // Largeur 300, hauteur automatique
  .toFile('output.jpg');

// Utiliser différents modes d'adaptation
await sharp('input.jpg')
  .resize(300, 200, {
    fit: 'cover',    // Recadrer pour s'adapter
    position: 'center' // Recadrage centré
  })
  .toFile('output.jpg');

Conversion de format

javascript
// Convertir en JPEG
await sharp('input.png')
  .jpeg({ quality: 80 })
  .toFile('output.jpg');

// Convertir en WebP
await sharp('input.jpg')
  .webp({ quality: 80 })
  .toFile('output.webp');

// Convertir en PNG
await sharp('input.jpg')
  .png({ compressionLevel: 9 })
  .toFile('output.png');

Recadrage

javascript
// Recadrer une zone spécifiée
await sharp('input.jpg')
  .extract({ left: 100, top: 100, width: 200, height: 200 })
  .toFile('cropped.jpg');

Rotation

javascript
// Rotation de 90 degrés
await sharp('input.jpg')
  .rotate(90)
  .toFile('rotated.jpg');

Opérations avancées

Effets de filtre

javascript
// Flou
await sharp('input.jpg')
  .blur(5)
  .toFile('blurred.jpg');

// Netteté
await sharp('input.jpg')
  .sharpen()
  .toFile('sharpened.jpg');

// Niveaux de gris
await sharp('input.jpg')
  .grayscale()
  .toFile('grayscale.jpg');

Ajustement des couleurs

javascript
// Ajuster la luminosité
await sharp('input.jpg')
  .modulate({ brightness: 1.2 })
  .toFile('bright.jpg');

// Ajuster le contraste
await sharp('input.jpg')
  .modulate({ contrast: 1.5 })
  .toFile('contrast.jpg');

// Ajuster la saturation
await sharp('input.jpg')
  .modulate({ saturation: 0.8 })
  .toFile('desaturated.jpg');

Options de sortie

Enregistrer dans un fichier

javascript
await sharp('input.jpg')
  .resize(300, 200)
  .toFile('output.jpg');

Sortie vers Buffer

javascript
const buffer = await sharp('input.jpg')
  .resize(300, 200)
  .jpeg()
  .toBuffer();

Sortie vers Stream

javascript
sharp('input.jpg')
  .resize(300, 200)
  .jpeg()
  .pipe(fs.createWriteStream('output.jpg'));

Gestion des erreurs

javascript
try {
  await sharp('input.jpg')
    .resize(300, 200)
    .toFile('output.jpg');
} catch (error) {
  console.error('Échec du traitement d'image:', error);
}

Optimisation des performances

Traitement en flux

javascript
// Utiliser un flux pour traiter les gros fichiers
const pipeline = sharp()
  .resize(300, 200)
  .jpeg({ quality: 80 });

fs.createReadStream('large-input.jpg')
  .pipe(pipeline)
  .pipe(fs.createWriteStream('output.jpg'));

Traitement concurrent

javascript
// Traiter plusieurs images simultanément
const promises = images.map(image => 
  sharp(image)
    .resize(300, 200)
    .jpeg()
    .toBuffer()
);

const results = await Promise.all(promises);

Exemple complet

javascript
import sharp from 'sharp';
import fs from 'fs';

async function processImage() {
  try {
    // Créer une miniature
    await sharp('input.jpg')
      .resize(150, 150, { fit: 'cover' })
      .jpeg({ quality: 90 })
      .toFile('thumbnail.jpg');

    // Créer une image de taille moyenne
    await sharp('input.jpg')
      .resize(800, 600, { fit: 'inside' })
      .webp({ quality: 80 })
      .toFile('medium.webp');

    // Créer une grande image
    await sharp('input.jpg')
      .resize(1920, 1080, { fit: 'inside' })
      .jpeg({ quality: 85 })
      .toFile('large.jpg');

    console.log('Traitement d'image terminé !');
  } catch (error) {
    console.error('Échec du traitement:', error);
  }
}

processImage();

Prochaines étapes

Maintenant que vous connaissez l'utilisation de base de Sharp, vous pouvez :

Distribué sous licence Apache 2.0.