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
- Instanzen wiederverwenden: Sharp-Instanzen nach Möglichkeit wiederverwenden
- Stream-Verarbeitung: Für große Dateien Stream-Verarbeitung verwenden
- 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');