QR-Code-Generator in C++: Vollständige Anleitung
QR-Codes sind zu einem festen Bestandteil des modernen Webs und mobiler Anwendungen geworden. Sie werden für schnelle Link-Navigation, die Übertragung von Kontaktdaten, Zahlungen und Authentifizierung verwendet. Wenn Sie in C++ entwickeln und einen eingebauten QR-Code-Generator benötigen – ohne externe Dienste und APIs – ist dieser Artikel genau das Richtige für Sie. Wir behandeln zwei Hauptbibliotheken: libqrencode (niedrigschwellig, flexibel) und CQRcode (hochschwellig, mit PNG-Ausgabe).
Warum QR-Codes in C++ generieren?
Hauptanwendungsszenarien:
- Offline-Generierung in Desktop-Anwendungen (Bestandsverwaltung, Tickets).
- Integration in serverseitige C++-Lösungen (hohe Leistung).
- Arbeit mit begrenzten Ressourcen (eingebettete Systeme, Mikrocontroller).
- Volle Kontrolle über den Kodierungs- und Fehlerkorrekturprozess.
Die Bibliothek libqrencode
libqrencode ist die beliebteste C/C++-Bibliothek zur Erstellung von QR-Codes. Sie implementiert den Standard ISO/IEC 18004, unterstützt alle Versionen (1–40) und Fehlerkorrekturstufen (L, M, Q, H). Die Bibliothek ist kompakt, benötigt keine Abhängigkeiten und funktioniert unter Linux, macOS und Windows (über MinGW oder MSVC).
Installation
# Linux (Debian/Ubuntu)sudo apt install libqrencode-dev
# macOS (Homebrew)brew install libqrencode
# Windows (vcpkg)vcpkg install libqrencodeBeispiel zur Generierung eines QR-Codes in ein Byte-Array (Schwarz-Weiß-Bild)
#include <qrencode.h>#include <iostream>#include <vector>
int main() { // QR-Code für den String "https://pythonlib.ru" erstellen QRcode *qr = QRcode_encodeString("https://pythonlib.ru", 0, QR_ECLEVEL_M, QR_MODE_8, 1); if (!qr) { std::cerr << "Fehler beim Erstellen des QR-Codes"; return 1; }
int width = qr->width; std::cout << "QR-Code-Größe: " << width << "x" << width << "";
// Daten: qr->data — Byte-Array (0 oder 1) for (int y = 0; y < width; ++y) { for (int x = 0; x < width; ++x) { bool black = (qr->data[y * width + x] & 0x01); std::cout << (black ? "██" : " "); } std::cout << ""; }
QRcode_free(qr); return 0;}Dieser Code gibt den QR-Code mit Zeichen in der Konsole aus. Für das Speichern als PNG oder BMP ist eine zusätzliche Verarbeitung erforderlich.
Die Bibliothek CQRcode
CQRcode ist ein Aufsatz auf libqrencode, der das Ergebnis sofort als PNG-Datei speichern kann. Ideal geeignet, wenn Sie eine fertige Grafikdatei ohne zusätzlichen Code benötigen. Unterstützt die Anpassung von Farbe, Modulgröße und das Hinzufügen eines zentralen Logos.
Installation
# Laden Sie die Quellen von GitHub herunter: https://github.com/rickyzhang82/CQRcode# Build mit CMake:mkdir build && cd buildcmake ..makesudo make installBeispiel zum Speichern eines QR-Codes als PNG
#include <CQRcode.h>
int main() { // Generator-Objekt erstellen CQRcode qr; // Daten setzen (URL, Text oder vCard) qr.setData("BEGIN:VCARDVERSION:3.0FN:PythonLibURL:https://pythonlib.ruEND:VCARD"); // Parameter konfigurieren qr.setModuleSize(8); // Größe eines Moduls in Pixeln qr.setMargin(4); // Rand (weißer Rahmen) qr.setCorrectionLevel(QR_ECLEVEL_H); // maximale Fehlerkorrektur // In Datei speichern if (qr.savePNG("pythonlib_qr.png")) { // Erfolgreich } else { // Fehler } return 0;}Vergleich der Bibliotheken
- libqrencode — minimalistisch, liefert Rohdaten. Erfordert
Auch in der Bibliothek
Arbeiten mit Bildern in PHP: Resize, Crop und Optimierung mit GD und Imagick
Internationalisierung (i18n) in Rust: Die Bibliotheken gettext-rs und fluent-rs
Event Bus und das Observer-Muster in C++: Implementierung und Beispiele