Die Sharp-Bibliothek für die Bildbearbeitung in Node.js
In der modernen Webentwicklung ist die serverseitige Bildverarbeitung eine kritische Aufgabe. Node.js meistert diese Aufgabe dank seiner ereignisgesteuerten Architektur hervorragend. Unter den zahlreichen Bibliotheken für die Bildbearbeitung nimmt Sharp eine besondere Stellung ein – ein leistungsstarkes Open-Source-Modul, das in C++ geschrieben ist und die libvips-Bibliothek verwendet.
Was ist Sharp?
Sharp ist ein Node.js-Modul zur schnellen Bildverarbeitung. Es unterstützt die Formate JPEG, PNG, WebP, AVIF, TIFF und GIF. Zu den Hauptfunktionen gehören Größenänderung, Zuschneiden, Drehen, Farbkorrektur, das Einfügen von Wasserzeichen und die Konvertierung zwischen Formaten. Dank der Verwendung von libvips arbeitet Sharp 4-5 Mal schneller als vergleichbare Bibliotheken (z. B. ImageMagick oder GraphicsMagick).
Installation
Die Installation erfolgt über npm. Stellen Sie sicher, dass auf Ihrem System C++-Compiler (gcc oder clang) und libvips installiert sind (auf manchen Betriebssystemen ist eine vorherige Installation erforderlich).
npm install sharpNach der Installation können Sie das Modul in Ihr Projekt importieren:
const sharp = require('sharp');Grundlegende Bildoperationen
1. Größenänderung (resize)
Die häufigste Aufgabe ist das Verkleinern oder Vergrößern eines Bildes. Sharp ermöglicht es, die Breite, die Höhe oder beide Werte gleichzeitig anzugeben. Wenn nur ein Parameter angegeben wird, wird der zweite proportional berechnet.
const sharp = require('sharp');
async function resizeImage() { try { await sharp('input.jpg') .resize(300, 200) // Breite 300px, Höhe 200px .toFile('output-resized.jpg'); console.log('Bildgröße geändert'); } catch (error) { console.error('Fehler:', error); }}
resizeImage();Um die Proportionen beizubehalten, verwenden Sie fit:
const sharp = require('sharp');
async function resizeWithFit() { await sharp('input.jpg') .resize({ width: 300, height: 200, fit: 'inside' // 'cover', 'contain', 'fill', 'inside', 'outside' }) .toFile('output-fit.jpg');}
resizeWithFit();2. Zuschneiden (crop)
Durch Zuschneiden können Sie unnötige Teile eines Bildes entfernen. Sharp unterstützt das Zuschneiden nach bestimmten Koordinaten oder nach einer Strategie (z. B. mittiges Zuschneiden).
const sharp = require('sharp');
async function cropImage() { await sharp('input.jpg') .extract({ left: 100, top: 50, width: 400, height: 300 }) .toFile('output-cropped.jpg');}
cropImage();Sie können auch resize mit der Option crop verwenden:
const sharp = require('sharp');
async function cropWithResize() { await sharp('input.jpg') .resize(200, 200, { fit: 'cover', position: 'centre' }) .toFile('output-cover.jpg');}
cropWithResize();3. Formatkonvertierung
Sharp ermöglicht es, Bilder einfach von einem Format in ein anderes zu konvertieren. Geben Sie einfach die Erweiterung in der Ausgabedatei an oder verwenden Sie die Methode .toFormat().
const sharp = require('sharp');
async function convertToWebP() { await sharp('input.png') .toFormat('webp') .toFile('output.webp');}
async function convertToJpeg() { await sharp('input.webp') .jpeg({ quality: 80 }) .toFile('output.jpg');}
convertToWebP();convertToJpeg();4. Arbeiten mit Metadaten
Sie können die Metadaten eines Bildes extrahieren: Abmessungen, Farbraum, DPI, EXIF-Daten usw.
const sharp = require('sharp');
async function getMetadata() { const metadata = await sharp('input.jpg').metadata(); console.log('Metadaten:', metadata); // { format: Auch in der Bibliothek
Testen in C++: Überblick über Frameworks und Tools (Google Test, Catch2, doctest)
Arbeiten mit Daten in Go (Golang): Überblick über Bibliotheken und Pakete
Datenbankmigrationen in TypeScript: TypeORM, Prisma und Drizzle
Überwachung von Swift-Anwendungen auf iOS/macOS: Bibliotheken und Tools