Generador de códigos QR en C# (.NET) con la librería QRCoder
Los códigos QR se han convertido en una parte esencial de la web moderna y las aplicaciones móviles. Se utilizan para la transmisión rápida de enlaces, datos de contacto, contraseñas Wi-Fi, datos de pago y mucho más. En el ecosistema de C# (.NET), una de las librerías más populares y fáciles de usar para generar códigos QR es QRCoder. En este artículo, analizaremos en detalle cómo instalar la librería, crear un código QR simple y complejo, y guardarlo en varios formatos (PNG, SVG).
¿Qué es QRCoder?
QRCoder es una librería ligera y de alto rendimiento de código abierto para .NET (compatible con .NET Framework 4.6+ y .NET Core/.NET 5+). No requiere dependencias externas, excepto la librería estándar System.Drawing para imágenes rasterizadas. Las principales características son:
- Generación de códigos QR a partir de texto, URL, contactos (vCard), configuraciones Wi-Fi, SMS, correo electrónico y otros formatos.
- Configuración del nivel de corrección de errores (L, M, Q, H).
- Selección de la versión del código QR (tamaño de la matriz).
- Exportación a PNG, BMP, SVG, XAML, EPS, PostScript y HTML.
- Soporte para colores, fondo, transparencia y logotipos personalizados.
Instalación en un proyecto C#
La instalación de la librería QRCoder se realiza a través del Administrador de paquetes NuGet. Abra la consola del administrador de paquetes o use la CLI de .NET:
dotnet add package QRCoderO a través de la Consola del Administrador de paquetes:
Install-Package QRCoderEjemplo básico: generación de un código QR simple
Creemos una aplicación de consola que genere un código QR para la cadena "https://pythonlib.ru" y lo guarde en un archivo PNG.
using QRCoder;using System.Drawing;
string url = "https://pythonlib.ru";QRCodeGenerator qrGenerator = new QRCodeGenerator();QRCodeData qrCodeData = qrGenerator.CreateQrCode(url, QRCodeGenerator.ECCLevel.Q);QRCode qrCode = new QRCode(qrCodeData);
// Generación de la imagen (píxeles)Bitmap qrCodeImage = qrCode.GetGraphic(20);
// Guardar en archivoqrCodeImage.Save("qrcode.png", System.Drawing.Imaging.ImageFormat.Png);
Console.WriteLine("Código QR creado: qrcode.png");En este ejemplo:
ECCLevel.Q— nivel de corrección de errores (el 25% de los datos pueden estar dañados).GetGraphic(20)— tamaño de un módulo (cuadrado) en píxeles.- El resultado es un PNG en blanco y negro.
Personalización de la apariencia: color, logotipo, SVG
QRCoder permite personalizar de forma flexible la apariencia del código QR. Veamos un ejemplo con fondo de color, módulos oscuros y un logotipo incorporado.
using QRCoder;using System.Drawing;
string data = "https://pythonlib.ru";QRCodeGenerator qrGenerator = new QRCodeGenerator();QRCodeData qrCodeData = qrGenerator.CreateQrCode(data, QRCodeGenerator.ECCLevel.Q);QRCode qrCode = new QRCode(qrCodeData);
// Configuración de colorColor darkColor = Color.FromArgb(52, 73, 94); // azul oscuroColor lightColor = Color.FromArgb(236, 240, 241); // gris claro
// Generación con logotipo (el logotipo debe estar en el centro)Bitmap logo = new Bitmap("logo.png");Bitmap qrCodeImage = qrCode.GetGraphic(20, darkColor, lightColor, logo);
qrCodeImage.Save("qrcode_color.png", System.Drawing.Imaging.ImageFormat.Png);Console.WriteLine("Código QR de color con logotipo guardado.");Tenga en cuenta: para un funcionamiento correcto con el logotipo, se recomienda usar el nivel de corrección de errores ECCLevel.Q o ECCLevel.H, ya que el logotipo cubre parte de los datos.
Exportación a SVG (formato vectorial)
Si necesita un código QR escalable (por ejemplo, para impresión), use el renderizador SVG. Para ello, instale el paquete adicional QRCoder.Svg:
También en la biblioteca
Trabajo con archivos ZIP en C++: bibliotecas libzip y zlib
Trabajo con imágenes en Swift: resize y crop para iOS/macOS
Redis (ioredis) para JavaScript (Node.js): guía completa con ejemplos