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 libqrencodeEjemplo 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 installEjemplo 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
También en la biblioteca
Cliente OAuth para Kotlin: biblioteca Ktor OAuth para autenticación en API
Generación de informes PDF en Rust: bibliotecas y ejemplos prácticos
Monitoreo de aplicaciones Java: biblioteca Micrometer e integración con Prometheus
Monitoreo de aplicaciones Kotlin: bibliotecas y herramientas para el seguimiento del rendimiento