QR-Code-Generierung auf Node.js mit der Bibliothek qrcode
QR-Codes sind zu einem unverzichtbaren Bestandteil des modernen Webs geworden: von Links zu WLAN bis hin zur Zahlungsbestätigung. Wenn Sie ein Backend auf Node.js entwickeln und programmatisch QR-Codes erstellen möchten, ist die Bibliothek qrcode das beliebteste und einfachste Werkzeug. Sie erfordert keine Installation zusätzlicher Grafikpakete und kann die Ausgabe in verschiedenen Formaten liefern: PNG, SVG, HTML-Canvas und sogar als Textansicht für das Terminal.
Installation
Installieren Sie das Paket über npm:
npm install qrcodeNach der Installation binden Sie das Modul in Ihr Projekt ein:
const QRCode = require('qrcode');Grundlegende Methoden
Die Bibliothek bietet drei Hauptmethoden zur Generierung:
QRCode.toDataURL(text, options)— gibt eine Data-URL zurück (base64-String mit einem PNG-Bild).QRCode.toBuffer(text, options)— gibt einen Buffer mit einem PNG-Bild zurück (praktisch zum Speichern in einer Datei oder zum Senden über HTTP).QRCode.toString(text, options)— gibt einen String im SVG-Format oder als Terminalzeichen zurück (der Ausgabetyp wird inoptions.typefestgelegt).QRCode.toCanvas(canvasElement, text, options)— für die Browser-Umgebung (Canvas).
Einfaches Beispiel: Erstellen eines QR-Codes in PNG (Buffer)
Das häufigste Szenario ist das Generieren eines Bildes und das Speichern in einer Datei oder die Ausgabe an den Benutzer. So geht's:
const QRCode = require('qrcode');const fs = require('fs');
QRCode.toBuffer('https://pythonlib.ru', { width: 400, margin: 2, color: { dark: '#000000', light: '#ffffff' }}).then(buffer => { fs.writeFileSync('qrcode.png', buffer); console.log('QR-Code gespeichert in qrcode.png');}).catch(err => console.error(err));In diesem Beispiel legen wir eine Größe von 400 Pixeln, einen Rand von 2 Modulen und ein schwarz-weißes Farbschema fest. Die Methode toBuffer gibt ein Promise zurück, daher verwenden wir .then() oder async/await.
Generierung eines QR-Codes in SVG
Für Webanwendungen ist das Vektorformat SVG oft praktischer – es skaliert ohne Qualitätsverlust und benötigt weniger Platz. Geben Sie type: 'svg' in den Optionen an:
const QRCode = require('qrcode');
QRCode.toString('https://pythonlib.ru', { type: 'svg', width: 300, color: { dark: '#1a73e8', light: '#ffffff' }}).then(svgString => { console.log(svgString); // Jetzt können Sie svgString in einer Datei speichern oder in HTML einfügen}).catch(err => console.error(err));Ausgabe des QR-Codes direkt im Terminal
Manchmal muss man schnell einen Link überprüfen, ohne den Browser zu öffnen. Die Bibliothek kann QR-Codes mit Unicode-Zeichen in der Konsole zeichnen:
const QRCode = require('qrcode');
QRCode.toString('Hallo, PythonLib!', { type: 'terminal', small: true}).then(qr => { console.log(qr);}).catch(err => console.error(err));Der Parameter small: true macht den QR-Code kompakter (verwendet halbe Blöcke). Wenn man ihn weglässt, wird das Bild größer, aber detaillierter.
Einstellungen und Parameter
Das Objekt options ermöglicht eine flexible Steuerung der Generierung. Die wichtigsten Felder:
width— Breite des Bildes in Pixeln (Standard: 256).margin— Randabstand (in QR-Code-Modulen, Standard: 4).color.dark— Farbe der dunklen Module (hex, rgb oder Farbname).color.light— Hintergrundfarbe (Standard: weiß).errorCorrectionLevel— Fehlerkorrekturstufe:'L'(7%),'M'(15%),'Q'(25%),'H'(30%). Je höher die Stufe, desto mehr Daten können wiederhergestellt werden, aber der QR-Code wird auch dichter.