Skip to content

Sharp Konstruktor

Sharp ist eine hochperformante Bildverarbeitungsbibliothek für Node.js. Der Konstruktor ist der Ausgangspunkt für die Verwendung von Sharp.

Grundlegende Verwendung

javascript
import sharp from 'sharp';

// Sharp-Instanz aus Dateipfad erstellen
const image = sharp('input.jpg');

// Sharp-Instanz aus Buffer erstellen
const image = sharp(inputBuffer);

// Sharp-Instanz aus Stream erstellen
const image = sharp(inputStream);

Konstruktorparameter

Eingabequellen

Der Sharp-Konstruktor akzeptiert verschiedene Eingabequellen:

javascript
// Dateipfad
sharp('input.jpg')

// Buffer
sharp(buffer)

// Stream
sharp(stream)

// URL
sharp('https://example.com/image.jpg')

// Mehrere Eingabequellen
sharp(['input1.jpg', 'input2.jpg'])

Optionsobjekt

javascript
sharp(input, {
  // Eingabeoptionen
  input: {
    failOnError: false,
    limitInputPixels: 268402689,
    sequentialRead: false
  },
  
  // Seitenoptionen (für mehrseitige Bilder)
  pages: -1,
  
  // Rohdatenoptionen
  raw: {
    width: 1920,
    height: 1080,
    channels: 3
  }
})

Eingabeoptionen

failOnError

  • Typ: boolean
  • Standardwert: true
  • Beschreibung: Ob bei Fehlern eine Ausnahme ausgelöst werden soll
javascript
sharp('input.jpg', { failOnError: false })
  .resize(300, 200)
  .toFile('output.jpg')
  .catch(err => console.log('Verarbeitung fehlgeschlagen:', err));

limitInputPixels

  • Typ: number
  • Standardwert: 268402689 (16384 x 16384)
  • Beschreibung: Begrenzt die Anzahl der Pixel im Eingabebild
javascript
sharp('large-image.jpg', { 
  limitInputPixels: 100000000 
})

sequentialRead

  • Typ: boolean
  • Standardwert: false
  • Beschreibung: Ob Bilddaten sequenziell gelesen werden sollen
javascript
sharp('input.jpg', { sequentialRead: true })

Mehrseitige Bilder

Für mehrseitige Bilder (z.B. TIFF, PDF) können die zu verarbeitenden Seiten angegeben werden:

javascript
// Alle Seiten verarbeiten
sharp('multi-page.tiff', { pages: -1 })

// Bestimmte Seite verarbeiten (beginnt bei 0)
sharp('multi-page.tiff', { pages: 0 })

// Mehrere Seiten verarbeiten
sharp('multi-page.tiff', { pages: [0, 2, 4] })

Rohe Bilddaten

Beim Verarbeiten von rohen Bilddaten müssen Abmessungen und Kanalanzahl angegeben werden:

javascript
sharp(rawBuffer, {
  raw: {
    width: 1920,
    height: 1080,
    channels: 3  // RGB
  }
})

Fehlerbehandlung

javascript
try {
  const image = sharp('input.jpg');
  await image.toFile('output.jpg');
} catch (error) {
  console.error('Bildverarbeitung fehlgeschlagen:', error.message);
}

Leistungshinweise

  1. Instanzen wiederverwenden: Sharp-Instanzen nach Möglichkeit wiederverwenden
  2. Stream-Verarbeitung: Für große Dateien Stream-Verarbeitung verwenden
  3. Speicherverwaltung: Nicht benötigte Instanzen rechtzeitig freigeben
javascript
// Gute Praxis
const sharp = require('sharp');
const image = sharp('input.jpg');

// Mehrere Operationen verarbeiten
await image
  .resize(300, 200)
  .jpeg({ quality: 80 })
  .toFile('output1.jpg');

await image
  .resize(150, 100)
  .png()
  .toFile('output2.jpg');

Veröffentlicht unter der Apache 2.0-Lizenz.