Divulgación completa: somos el equipo de relaciones con desarrolladores de Iron Software, la empresa detrás de IronQR, una de las bibliotecas de esta comparación. Dicho esto, creemos que las evaluaciones honestas sirven a todos mejor que el marketing. Mostraremos nuestra metodología, reconoceremos nuestros sesgos y dejaremos que el código hable por sí mismo. Ejecutamos cada biblioteca de códigos QR C# bajo criterios de evaluación idénticos: generación simple de códigos QR, lectura de códigos QR a partir de imágenes, profundidad de personalización, compatibilidad multiplataforma y costo de licencia. A continuación, se presenta el resultado, una comparación de 11 bibliotecas de códigos QR notables en el ecosistema .NET, diseñadas para ayudarlo a elegir la correcta para su proyecto a la primera. Así es como se ve la generación de códigos QR en tres líneas con en Visual Studio, una de las bibliotecas que cubriremos: IronQR using IronQr; using IronSoftware.Drawing; QrCode qr = QrWriter.Write("https://example.com"); AnyBitmap bitmap = qr.Save(); bitmap.SaveAs("myqr.png"); Salida de ejemplo de código QR de IronQR Esa simplicidad es lo mínimo esperado. La pregunta real es qué sucede cuando necesita un código QR dañado de un escáner de almacén, incrustar un logotipo de marca, dirigirse a contenedores Linux o procesar miles de códigos en un trabajo por lotes. Ahí es donde las bibliotecas divergen y donde esta comparación demuestra su valor. leer El Resumen: Tabla de Comparación Maestra Antes de profundizar, aquí tiene la imagen completa. Esta tabla captura las dimensiones que más importan al seleccionar una biblioteca de códigos QR para un proyecto .NET. Biblioteca Generar Leer Logotipo/Estilo Micro QR Multiplataforma Licencia Descargas de NuGet IronQR ✅ ✅ Con IA de aprendizaje automático ✅ Completo ✅ + RMQR ✅ Win/Mac/Linux/Móvil Comercial (749 $ +) ~56K QRCoder ✅ ❌ ✅ Moderado ✅ ⚠️ Parcial (System.Drawing) MIT (Gratis) ~68M ZXing.Net ✅ ✅ ❌ Mínimo ❌ ⚠️ A través de enlaces Apache 2.0 (Gratis) ~32M Net.Codecrete.QrCodeGenerator ✅ ❌ ❌ ❌ ✅ MIT (Gratis) ~4.1M SkiaSharp.QrCode ✅ ❌ ✅ Formas personalizadas ❌ ✅ MIT (Gratis) ~1.2M Aspose.BarCode ✅ ✅ ✅ ✅ ✅ Comercial (999 $ +) ~5.4M Syncfusion Barcode ✅ ❌ ✅ Moderado ❌ ✅ (Control UI) Comercial (comunidad gratuita) ~2M + Spire.Barcode ✅ ✅ ✅ Incrustación de logotipo ❌ ⚠️ (System.Drawing) Comercial (599 $ +) ~450K IronBarcode ✅ ✅ ✅ ✅ Micro QR ✅ Win/Mac/Linux Comercial (749 $ +) ~1.2M Dynamsoft Barcode Reader ❌ ✅ Alto rendimiento N/A ✅ ✅ Comercial (1.249 $+/año) ~250K BarcodeLib ✅ ❌ ❌ ❌ ⚠️ (System.Drawing) Apache 2.0 (Gratis) ~4.5M Tabla 1: Comparación maestra de 11 bibliotecas de códigos QR .NET según criterios clave de selección. Los recuentos de descargas son aproximados a principios de 2026. El resto de este artículo desglosa cada fila, con código, compensaciones y evaluaciones honestas. ¿Cómo Evaluamos Estas Bibliotecas? Evaluamos cada biblioteca según siete criterios, ponderados por la frecuencia con la que impulsan las decisiones de selección en el mundo real: : ¿Puede crear códigos QR a partir de cadenas, URL y datos estructurados (vCards, credenciales Wi-Fi)? Generación de Códigos QR : ¿Puede decodificar códigos QR de imágenes, escaneos o PDF? ¿Cómo maneja los códigos dañados o rotados? Lectura de Códigos QR : Incrustación de logotipos, control de color, estilo de formas de módulos, configuración de corrección de errores Personalización : QR estándar, Micro QR, RMQR (QR Micro Rectangular) Soporte de Formatos QR : ¿Funciona limpiamente en Windows, Linux, macOS y dentro de contenedores Docker sin trucos de System.Drawing? Multiplataforma : Código abierto vs. comercial, precios por desarrollador, descuentos por paquete Licencia y Costo : Calidad de la referencia de la API, disponibilidad de tutoriales, tamaño de la comunidad, mantenimiento activo Documentación y Ecosistema Todos los ejemplos de código se dirigen a y utilizan instrucciones de nivel superior. Donde .NET 10 introduce mejoras relevantes, las notamos. .NET 8 (LTS) ¿Qué Biblioteca de Códigos QR Debería Elegir? Un Marco de Decisión Omita los 11 perfiles de bibliotecas a continuación si ya conoce sus limitaciones. Aquí está el camino rápido: → o . Ambas tienen licencia MIT. QRCoder tiene más renderizadores y asistentes de carga útil; Net.Codecrete es más ligero y evita completamente System.Drawing. "Necesito generar códigos QR gratis y sin dependencias." QRCoder Net.Codecrete.QrCodeGenerator → (lectura con IA de aprendizaje automático, mejor precisión en códigos dañados), (gratis, probado en batalla, soporte de formato más amplio) o (paquete empresarial, costoso). "Necesito generar Y leer códigos QR." IronQR ZXing.Net Aspose.BarCode → , o . Las tres evitan la dependencia de System.Drawing que rompe los despliegues multiplataforma. "Estoy desplegando en contenedores Linux/Docker y no puedo usar System.Drawing." IronQR SkiaSharp.QrCode Net.Codecrete.QrCodeGenerator → lidera en puntos de referencia de generación pura. Para el rendimiento de lectura, está diseñado específicamente para escaneo de alto rendimiento. "El rendimiento y el tamaño de la memoria son críticos." SkiaSharp.QrCode Dynamsoft Barcode Reader → Usa lo que tienes. Agregar la biblioteca de códigos QR de otro proveedor cuando su paquete ya incluye una rara vez tiene sentido desde una perspectiva de licencia o mantenimiento. "Ya utilizo un paquete Aspose/Syncfusion/Iron Software." → tiene guías de integración explícitas para MAUI y Blazor. El MVP de Microsoft Jeff Fritz utilizando IronQR con Blazor, un ejemplo del mundo real de este patrón exacto. "Estoy creando una aplicación móvil Blazor/MAUI con escaneo de códigos QR." IronQR creó una aplicación de tarjeta de visita digital basada en códigos QR Las 11 Bibliotecas de Códigos QR .NET Comparadas 1. IronQR — Lectura y Generación de Códigos QR con IA de Aprendizaje Automático y Soporte Multiplataforma IronQR es la biblioteca dedicada de códigos QR de Iron Software, separada de su producto más amplio IronBarcode. Su característica destacada es un modelo de aprendizaje automático (basado en ) que detecta y lee códigos QR de imágenes imperfectas, rotadas, parcialmente oscurecidas o fotografiadas en ángulos extraños, a menudo en unas pocas líneas de código. ONNX También es capaz de crear objetos de código QR con facilidad, con soporte para estilizar códigos QR con imágenes, agregar colores personalizados y guardar su imagen QR en diferentes formatos de salida. Generación: using IronQr; using IronSoftware.Drawing; // Generar un código QR estilizado con logotipo var options = new QrOptions(QrErrorCorrectionLevel.High, 20); QrCode qr = QrWriter.Write("https://example.com", options); var style = new QrStyleOptions { Dimensions = 300, Margins = 10, Color = new Color("#2E75B6"), Logo = new QrLogo { Bitmap = AnyBitmap.FromFile("logo.png"), Width = 80, Height = 80 } }; AnyBitmap styledQr = qr.Save(style); styledQr.SaveAs("branded-qr.png"); Salida de Código QR Generado por IronQR Lectura: using IronQr; using IronSoftware.Drawing; var reader = new QrReader(); var input = new QrImageInput(AnyBitmap.FromFile("scanned-qr.jpg")); IEnumerable<QrResult> results = reader.Read(input); foreach (var result in results) Console.WriteLine($"Value: {result.Value}"); Salida de Lectura de IronQR El modelo de IA de aprendizaje automático es lo que diferencia a IronQR de todas las demás bibliotecas de esta lista. En nuestras pruebas, decodificó con éxito códigos QR de fotos de credenciales de conferencias y capturas de pantalla de teléfonos en ángulo donde ZXing.Net y los lectores básicos de procesamiento de imágenes no arrojaron nada. La compensación es el tamaño del paquete, el modelo ONNX agrega peso. Si no necesita lectura, IronQR.Slim se envía sin el modelo de IA y es significativamente más ligero. Fortalezas: La lectura con IA de aprendizaje automático maneja códigos QR dañados, rotados y parcialmente oscurecidos y prioriza la precisión Soporta formatos de código QR, Micro QR y RMQR (QR Micro Rectangular) API de estilo completo: colores, logotipos, módulos redondeados, márgenes Multiplataforma: Windows, macOS, Linux, iOS, Android, Docker, Azure, AWS Soporte de lectura asíncrona (ReadAsync) para cargas de trabajo de servidor Guardar en múltiples formatos como imagen PNG, JPG, TIFF multipágina y más La API fácil de usar la hace fácil de usar Limitaciones: Se requiere licencia comercial (749 $ + por desarrollador para despliegue) El paquete completo es más pesado que las alternativas de código abierto debido al modelo de IA El es menor que las opciones maduras de código abierto, producto más nuevo (lanzado ~2023) recuento de descargas de NuGet Los proyectos solo de generación pueden no necesitar la sobrecarga de IA Proyectos que necesitan tanto generación como lectura, especialmente cuando las condiciones de escaneo son imperfectas (aplicaciones móviles, escaneo de almacenes, escenarios de conferencias/eventos). El demuestra IronQR manejando la generación de códigos QR en tiempo real con Blazor y marca personalizada. Ideal para: estudio de caso de tarjeta de visita con código QR de Jeff Fritz 2. — El Generador de Códigos QR de Código Abierto Más Popular QRCoder La biblioteca QRCoder es el paquete de códigos QR más descargado en NuGet, con . Creado originalmente por Raffael Herrmann en 2013 y ahora , es una implementación pura en C# centrada exclusivamente en la de códigos QR (no en la lectura). más de 68 millones de descargas mantenido por Shane32 generación using QRCoder; // Generar un código QR y guardar como bytes PNG using var qrGenerator = new QRCodeGenerator(); using var qrCodeData = qrGenerator.CreateQrCode("https://example.com", QRCodeGenerator.ECCLevel.H); using var pngQrCode = new PngByteQRCode(qrCodeData); byte[] qrCodeImage = pngQrCode.GetGraphic(20); File.WriteAllBytes("qrcoder-output.png", qrCodeImage); Imagen de Salida de QRCoder QRCoder proporciona múltiples renderizadores: PngByteQRCode (multiplataforma, sin dependencia de System.Drawing), QRCode (basado en System.Drawing, solo Windows), SvgQRCode, AsciiQRCode y más. También incluye generadores de carga útil para datos estructurados como credenciales Wi-Fi, vCards y marcadores, lo que le ahorra el formato manual de esas cadenas. Fortalezas: Licencia MIT, completamente gratuita para uso comercial Más de 68 millones de descargas en NuGet, adopción masiva por parte de la comunidad y estabilidad probada Múltiples opciones de renderizador, incluido un PngByteQRCode que evita System.Drawing Generadores de carga útil integrados (Wi-Fi, vCard, geolocalización, eventos de calendario) Soporte para códigos Micro QR Cero dependencias en objetivos de .NET Standard Limitaciones: , no puede leer ni decodificar archivos de imagen de códigos QR Solo generación Algunos renderizadores (como QRCode) dependen de System.Drawing.Common, que es solo para Windows desde .NET 6 No hay incrustación de logotipos incorporada (tendría que componer la imagen usted mismo) Sin estilo avanzado (formas de módulos, degradados) Proyectos que solo necesitan generación de códigos QR, especialmente cuando el presupuesto es cero. Si necesita generar códigos QR Wi-Fi o vCards y no necesita leer códigos en absoluto, QRCoder es la opción pragmática predeterminada para la mayoría de los desarrolladores de .NET. Ideal para: 3. — La Navaja Suiza de las Bibliotecas de Códigos de Barras ZXing.Net ("Zebra Crossing") es el de la biblioteca original de Java ZXing. Es una biblioteca de propósito general para códigos de barras que soporta más de 15 formatos, Código QR, Data Matrix, Aztec, PDF 417, UPC, EAN, Code 128 y más. El soporte para códigos QR es un subconjunto de sus capacidades más amplias. ZXing.Net puerto .NET using ZXing; using ZXing.Common; using ZXing.QrCode; // Generar un código QR var writer = new BarcodeWriterPixelData { Format = BarcodeFormat.QR_CODE, Options = new QrCodeEncodingOptions { Height = 250, Width = 250, Margin = 1 } }; var pixelData = writer.Write("https://example.com"); // La lectura de un código QR requiere un paquete de enlace (por ejemplo, ZXing.Net.Bindings.SkiaSharp) Salida de ZXing.Net ZXing.Net requiere paquetes de enlace específicos de la plataforma para renderizado y lectura. El paquete principal proporciona la lógica de codificación/decodificación; usted agrega ZXing.Net.Bindings.Windows.Compatibility, ZXing.Net.Bindings.SkiaSharp o ZXing.Net.Bindings.ImageSharp según su plataforma de destino. Este enfoque modular es flexible pero agrega complejidad de integración. Fortalezas: Licencia Apache 2.0, gratuita para uso comercial Generación y lectura en una sola biblioteca Soporta más de 15 formatos de códigos de barras además de códigos QR , probado en batalla, amplio conocimiento comunitario Más de 32 millones de descargas en NuGet Enlaces disponibles para SkiaSharp, ImageSharp, OpenCV y más Limitaciones: Las funciones específicas de QR son básicas, sin incrustación de logotipos, sin estilos avanzados La precisión de lectura en códigos QR dañados/rotados es moderada en comparación con soluciones impulsadas por IA Los paquetes de enlace agregan complejidad en la gestión de dependencias El diseño de la API muestra su antigüedad, menos fluido que las bibliotecas .NET modernas El ritmo de mantenimiento activo se ha ralentizado (mantenido por la comunidad) Proyectos que necesitan soporte tanto para códigos QR como para códigos de barras tradicionales (minorista, logística) y desean una opción gratuita y probada. Si su prioridad son las características específicas de QR como el estilo o la lectura con IA en lugar de la cobertura general de formatos de códigos de barras, una biblioteca de códigos QR dedicada le servirá mejor. Ideal para: 4. Net.Codecrete.QrCodeGenerator — Ligero y Centrado en Estándares Net.Codecrete.QrCodeGenerator es una biblioteca de generación de códigos QR limpia y mínima de Manuel Bleichenbacher. Es una , centrada en la corrección y el cumplimiento de estándares ( ). traducción a .NET del generador de códigos QR de Java del Proyecto Nayuki ISO/IEC 18004 using Net.Codecrete.QrCodeGenerator; var qr = QrCode.EncodeText("https://example.com", QrCode.Ecc.Medium); string svg = qr.ToSvgString(4); File.WriteAllText("output.svg", svg); Ejemplo de Salida con Net.Codecrete.QrCodeGenerator Con , está bien adoptado para una biblioteca centrada. Su cualidad destacada es la ausencia de dependencias en System.Drawing: genera SVG, datos de ruta XAML, PNG y BMP de forma nativa. Esto la convierte en una excelente opción para proyectos .NET multiplataforma y servicios ASP.NET Core que se ejecutan en Docker. ~4.1 millones de descargas en NuGet Fortalezas: Licencia MIT, completamente gratuita Sin dependencia de System.Drawing, verdaderamente multiplataforma Pequeña huella, generación rápida Salida SVG y XAML incorporada (útil para escenarios WPF, WinUI y web) Implementación correcta de las 40 versiones de QR y los 4 niveles de corrección de errores Amplios ejemplos de proyectos (WinForms, WPF, ASP.NET Core, SkiaSharp, ImageSharp) Limitaciones: , sin capacidad de lectura de códigos QR Solo generación Sin incrustación de logotipos ni funciones de estilo avanzado Personalización limitada en comparación con los generadores de carga útil de QRCoder Menos contenido comunitario y tutoriales en comparación con QRCoder o ZXing.Net Desarrolladores que necesitan un generador de códigos QR pequeño, correcto y multiplataforma con salida SVG y sin el lastre de System.Drawing. Si su objetivo de despliegue es Linux o Docker y solo necesita generación, esta biblioteca merece una seria consideración. Ideal para: 5. SkiaSharp.QrCode — Generación Multiplataforma de Alto Rendimiento SkiaSharp.QrCode de es una biblioteca de generación de códigos QR centrada en el rendimiento y construida sobre SkiaSharp. Fue creada específicamente para evitar las limitaciones de GDI+ de System.Drawing, al tiempo que ofrece un rendimiento a nivel nativo a través de la aceleración de hardware de SkiaSharp. guitarrapc using SkiaSharp.QrCode.Image; // Una línea: generar y guardar QRCodeImageBuilder.SavePng("https://example.com", "qrcode.png"); // O con configuraciones personalizadas var pngBytes = new QRCodeImageBuilder("https://example.com") .WithSize(512, 512) .WithErrorCorrection(ECCLevel.H) .ToByteArray(); Salida de Una Línea de SkiaSharp.QrCode Los resultados de referencia del repositorio del proyecto muestran que SkiaSharp.QrCode supera a QRCoder y otras bibliotecas de códigos QR .NET en velocidad y asignación de memoria para tareas de generación. Logra renderizado sin copias directamente en el lienzo SkiaSharp, evitando asignaciones de búfer intermedias. Fortalezas: Licencia MIT, gratuita para uso comercial Rendimiento de generación líder en su clase (probado en benchmarks) Asignación mínima de memoria, baja presión de GC para escenarios de alto rendimiento Listo para NativeAOT (soporte de compilación AOT nativa de .NET) Formas de módulos personalizadas (círculos, rectángulos redondeados) para códigos QR estilizados Funciona en Windows, Linux, macOS, iOS, Android, WebAssembly Limitaciones: , sin lectura de códigos QR Solo generación Requiere dependencias nativas de SkiaSharp (paquetes NuGet específicos de la plataforma) Comunidad más pequeña que QRCoder o ZXing.Net Sin generadores de carga útil (Wi-Fi, vCard), formatee esas cadenas usted mismo Solo UTF-8, sin codificación ISO-8859-2 o Shift JIS Aplicaciones de servidor de alto rendimiento que generan códigos QR a escala (por ejemplo, sistemas de emisión de boletos, generación de etiquetas masiva) donde el rendimiento y la eficiencia de la memoria son lo más importante. También es ideal si ya está utilizando SkiaSharp en su proyecto. Ideal para: 6. Aspose.BarCode — Paquete Empresarial de Códigos de Barras para Generar Códigos QR es una biblioteca comercial integral que soporta más de 80 simbologías de códigos de barras, incluidos QR Code, Micro QR, Data Matrix, PDF417 y todos los formatos 1D comunes. Forma parte del ecosistema más amplio de Aspose utilizado por las empresas para el procesamiento de documentos. Aspose.BarCode para .NET using Aspose.BarCode.Generation; using Aspose.BarCode.BarCodeRecognition; // Generar var generator = new BarcodeGenerator(EncodeTypes.QR, "https://example.com"); generator.Parameters.Barcode.XDimension.Pixels = 4; generator.Save("aspose-qr.png", BarCodeImageFormat.Png); // Leer using var reader = new BarCodeReader("aspose-qr.png", DecodeType.QR); foreach (var result in reader.ReadBarCodes()) Console.WriteLine($"Type: {result.CodeTypeName}, Text: {result.CodeText}"); Salida de Código QR de Aspose.BarCode Salida de Lectura de Aspose.BarCode <