Generador de códigos QR en C++ con libqrencode y CQRcode

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Generador de códigos QR en C++: guía completa



Los códigos QR se han convertido en una parte esencial de la web moderna y las aplicaciones móviles. Se utilizan para acceder rápidamente a enlaces, transferir datos de contacto, realizar pagos y autenticación. Si desarrolla en C++ y necesita un generador de códigos QR integrado, sin servicios externos ni API, este artículo es para usted. Analizaremos dos bibliotecas principales: libqrencode (de bajo nivel, flexible) y CQRcode (de alto nivel, con salida PNG).



¿Por qué generar códigos QR en C++?

Los principales casos de uso son:

  • Generación sin conexión en aplicaciones de escritorio (gestión de productos, entradas).
  • Integración en soluciones de servidor en C++ (alto rendimiento).
  • Trabajo con recursos limitados (sistemas embebidos, microcontroladores).
  • Control total sobre el proceso de codificación y corrección de errores.


Biblioteca libqrencode

libqrencode es la biblioteca C/C++ más popular para crear códigos QR. Implementa el estándar ISO/IEC 18004, soporta todas las versiones (1–40) y niveles de corrección de errores (L, M, Q, H). La biblioteca es compacta, no requiere dependencias y funciona en Linux, macOS y Windows (a través de MinGW o MSVC).



Instalación

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

# macOS (Homebrew)brew install libqrencode

# Windows (vcpkg)vcpkg install libqrencode


Ejemplo de generación de código QR en una matriz de bytes (imagen en blanco y negro)

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

int main() { // Creamos un código QR para la cadena "https://pythonlib.ru" QRcode *qr = QRcode_encodeString("https://pythonlib.ru", 0, QR_ECLEVEL_M, QR_MODE_8, 1); if (!qr) { std::cerr << "Error al crear el código QR"; return 1; }

int width = qr->width; std::cout << "Tamaño del código QR: " << width << "x" << width << "";

// Datos: qr->data — matriz de bytes (0 o 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;}

Este código imprime el código QR en la consola con caracteres. Para guardarlo en PNG o BMP, se requiere procesamiento adicional.



Biblioteca CQRcode

CQRcode es una capa superior sobre libqrencode que puede guardar el resultado directamente en un archivo PNG. Es ideal si necesita un archivo gráfico listo sin código adicional. Admite la configuración de color, tamaño del módulo y la adición de un logotipo central.



Instalación

# Descargue el código fuente de GitHub: https://github.com/rickyzhang82/CQRcode# Compilación con CMake:mkdir build && cd buildcmake ..makesudo make install


Ejemplo de guardado de código QR en PNG

#include <CQRcode.h>

int main() { // Creamos un objeto generador CQRcode qr; // Establecemos los datos (URL, texto o vCard) qr.setData("BEGIN:VCARDVERSION:3.0FN:PythonLibURL:https://pythonlib.ruEND:VCARD"); // Configuramos los parámetros qr.setModuleSize(8); // tamaño de un módulo en píxeles qr.setMargin(4); // margen (marco blanco) qr.setCorrectionLevel(QR_ECLEVEL_H); // corrección de errores máxima // Guardamos en un archivo if (qr.savePNG("pythonlib_qr.png")) { // Éxito } else { // Error } return 0;}


Comparación de bibliotecas

  • libqrencode — minimalista, proporciona datos sin procesar. Requiere

Recommendations