Générateur de QR codes en C++ avec libqrencode et CQRcode

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Générateur de QR codes en C++ : guide complet



Les QR codes sont devenus une partie intégrante du web moderne et des applications mobiles. Ils sont utilisés pour accéder rapidement à des liens, transmettre des coordonnées, effectuer des paiements et s'authentifier. Si vous développez en C++ et avez besoin d'un générateur de QR codes intégré — sans services externes ni API — cet article est pour vous. Nous aborderons deux bibliothèques principales : libqrencode (bas niveau, flexible) et CQRcode (haut niveau, avec export PNG).



Pourquoi générer des QR codes en C++ ?

Principaux cas d'utilisation :

  • Génération hors ligne dans des applications de bureau (gestion de stock, billets).
  • Intégration dans des solutions serveur en C++ (haute performance).
  • Travail avec des ressources limitées (systèmes embarqués, microcontrôleurs).
  • Contrôle total du processus de codage et de correction d'erreurs.


Bibliothèque libqrencode

libqrencode est la bibliothèque C/C++ la plus populaire pour créer des QR codes. Elle implémente la norme ISO/IEC 18004, prend en charge toutes les versions (1–40) et tous les niveaux de correction d'erreurs (L, M, Q, H). La bibliothèque est compacte, sans dépendances et fonctionne sous Linux, macOS et Windows (via MinGW ou MSVC).



Installation

# Linux (Debian/Ubuntu)sudo apt install libqrencode-dev

# macOS (Homebrew)brew install libqrencode

# Windows (vcpkg)vcpkg install libqrencode


Exemple de génération d'un QR code dans un tableau d'octets (image noir et blanc)

#include <qrencode.h>#include <iostream>#include <vector>

int main() { // Créer un QR code pour la chaîne "https://pythonlib.ru" QRcode *qr = QRcode_encodeString("https://pythonlib.ru", 0, QR_ECLEVEL_M, QR_MODE_8, 1); if (!qr) { std::cerr << "Erreur de création du QR code"; return 1; }

int width = qr->width; std::cout << "Taille du QR code : " << width << "x" << width << "";

// Données : qr->data — tableau d'octets (0 ou 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;}

Ce code affiche le QR code dans la console avec des caractères. Pour l'enregistrer en PNG ou BMP, un traitement supplémentaire est nécessaire.



Bibliothèque CQRcode

CQRcode est une surcouche de libqrencode qui permet d'enregistrer directement le résultat dans un fichier PNG. Idéal si vous avez besoin d'un fichier graphique prêt à l'emploi sans code superflu. Prend en charge la configuration des couleurs, de la taille du module et l'ajout d'un logo central.



Installation

# Téléchargez les sources depuis GitHub : https://github.com/rickyzhang82/CQRcode# Compilation avec CMake :mkdir build && cd buildcmake ..makesudo make install


Exemple d'enregistrement d'un QR code en PNG

#include <CQRcode.h>

int main() { // Créer un objet générateur CQRcode qr; // Définir les données (URL, texte ou vCard) qr.setData("BEGIN:VCARDVERSION:3.0FN:PythonLibURL:https://pythonlib.ruEND:VCARD"); // Configurer les paramètres qr.setModuleSize(8); // taille d'un module en pixels qr.setMargin(4); // marge (cadre blanc) qr.setCorrectionLevel(QR_ECLEVEL_H); // correction d'erreurs maximale // Enregistrer dans un fichier if (qr.savePNG("pythonlib_qr.png")) { // Succès } else { // Erreur } return 0;}


Comparaison des bibliothèques

  • libqrencode — minimaliste, fournit des données brutes. Nécessite

Recommendations