Cómo generar un código QR utilizando QRCoder en comparación con IronQR en .NET 6
Generación de códigos QR en C
Crear códigos QR en aplicaciones C# es un requisito común para los desarrolladores, especialmente para aplicaciones que involucran identificación de productos, emisión de boletos o compartir URLs y otros datos fácilmente. Existen varias bibliotecas disponibles para generar códigos QR en C#. Dos opciones destacables son QRCoder e IronQR. Aquí, exploraremos ambas, comparando sus capacidades, facilidad de uso, rendimiento y otros factores relevantes para desarrolladores que trabajan con .NET 6. En este artículo, profundizaremos en una comparación detallada de estas bibliotecas, examinando sus características, facilidad de uso, licencia y más, junto con ejemplos de código para ilustrar su uso.
Cómo generar un código QR usando QRCoder en comparación con IronQR en .NET 6
- Cree un nuevo proyecto en Visual Studio para Generar un código QR
- Instale los paquetes NuGet QRCoder e IronQR para comparar
- Cree códigos QR utilizando QRCoder e IronQR
- Opciones de Personalización con QRCoder e IronQR
Codificador QR
QRCoder es una biblioteca de código abierto escrita en C# y proporciona una implementación de Código QR que le permite generar Códigos QR como se define por la ISO/IEC 18004 en cualquier aplicación .NET. Es una biblioteca ligera y fácil de usar sin dependencias de otras bibliotecas o pilas de red.
Aquí están las características y beneficios clave de QRCoder:
1. Facilidad de uso
C# QRCoder ofrece una API sencilla e intuitiva, facilitando a los desarrolladores generar códigos QR/códigos QR de texto con un mínimo esfuerzo. Su simplicidad permite a desarrolladores de todos los niveles de habilidad integrar rápidamente la generación de códigos QR en sus proyectos.
2. Amplias opciones de personalización
Una de las características destacadas de QRCoder es su capacidad para personalizar códigos QR de acuerdo a requisitos específicos. Los desarrolladores pueden ajustar parámetros como el nivel de corrección de errores, tamaño, color, e incluso incrustar logotipos o imágenes dentro del código QR.
3. Múltiples formatos de codificación
QRCoder soporta varios formatos de codificación, permitiendo a los desarrolladores codificar diferentes tipos de datos en códigos QR. Ya sea texto simple, URLs, información de contacto, o credenciales Wi-Fi, QRCoder puede manejar una amplia gama de formatos de datos.
4. Resultados de alta calidad
Los códigos QR generados por C# QRCoder son de alta calidad, asegurando legibilidad y fiabilidad a través de diferentes dispositivos y condiciones de escaneo. Esta fiabilidad es crucial para aplicaciones donde los códigos QR actúan como un puente entre interacciones físicas y digitales.
5. Código abierto y desarrollo activo
C# QRCoder es un proyecto de código abierto, permitiendo a los desarrolladores contribuir a su desarrollo y asegurando mejoras continuas y actualizaciones. Este compromiso activo de la comunidad fomenta la innovación y garantiza que la biblioteca permanezca relevante en el siempre cambiante panorama de la tecnología.
IronQR
IronQR es una poderosa biblioteca de C# para Código QR desarrollada y mantenida por Iron Software. Permite a ingenieros de software en C# detectar, leer y crear Códigos QR en aplicaciones y sitios web .NET. Aquí hay algunas características clave de IronQR:
Generación de códigos QR
IronQR permite una generación de códigos QR altamente personalizable. Puede crear códigos QR con varias opciones, como redimensionado, márgenes, bordes, y recoloreado.
using IronQr;
using IronSoftware.Drawing;
public class Program
{
public static void Main()
{
// Prepare a QR Code object
QrCode theQrGen = QrWriter.Write("Awesome IronQR");
// Save QR Code to memory
AnyBitmap myQrImage = theQrGen.Save();
// Save QR Code image to disk
myQrImage.SaveAs("awesome.png");
}
}using IronQr;
using IronSoftware.Drawing;
public class Program
{
public static void Main()
{
// Prepare a QR Code object
QrCode theQrGen = QrWriter.Write("Awesome IronQR");
// Save QR Code to memory
AnyBitmap myQrImage = theQrGen.Save();
// Save QR Code image to disk
myQrImage.SaveAs("awesome.png");
}
}Imports IronQr
Imports IronSoftware.Drawing
Public Class Program
Public Shared Sub Main()
' Prepare a QR Code object
Dim theQrGen As QrCode = QrWriter.Write("Awesome IronQR")
' Save QR Code to memory
Dim myQrImage As AnyBitmap = theQrGen.Save()
' Save QR Code image to disk
myQrImage.SaveAs("awesome.png")
End Sub
End ClassLectura de códigos QR
IronQR usa un Modelo Avanzado de Aprendizaje Automático para la detección de códigos QR. Este modelo asegura una lectura precisa y rápida de códigos QR. IronQR soporta leer códigos QR desde varios formatos de imagen, incluyendo JPG, PNG, SVG, bmp, e imágenes multipágina como gif y tiff.
using IronQr;
using IronSoftware.Drawing;
using System.Collections.Generic;
public class Program
{
public static void Main()
{
// Read QR code
var inputBmp = AnyBitmap.FromFile("awesome.png");
// Load the image into QrImageInput
QrImageInput imageInput = new QrImageInput(inputBmp);
// Create the QR Reader object
QrReader reader = new QrReader();
// Read the Input and get all embedded QR Codes
IEnumerable<QrResult> results = reader.Read(imageInput);
}
}using IronQr;
using IronSoftware.Drawing;
using System.Collections.Generic;
public class Program
{
public static void Main()
{
// Read QR code
var inputBmp = AnyBitmap.FromFile("awesome.png");
// Load the image into QrImageInput
QrImageInput imageInput = new QrImageInput(inputBmp);
// Create the QR Reader object
QrReader reader = new QrReader();
// Read the Input and get all embedded QR Codes
IEnumerable<QrResult> results = reader.Read(imageInput);
}
}Imports IronQr
Imports IronSoftware.Drawing
Imports System.Collections.Generic
Public Class Program
Public Shared Sub Main()
' Read QR code
Dim inputBmp = AnyBitmap.FromFile("awesome.png")
' Load the image into QrImageInput
Dim imageInput As New QrImageInput(inputBmp)
' Create the QR Reader object
Dim reader As New QrReader()
' Read the Input and get all embedded QR Codes
Dim results As IEnumerable(Of QrResult) = reader.Read(imageInput)
End Sub
End ClassCompatibilidad entre plataformas
- Escritorio: Funciona con aplicaciones de escritorio de Windows (WPF & MAUI).
- Móvil: Compatible con Xamarin y MAUI.
- Web: Soporta Blazor y WebForms.
- Consola: Entornos de aplicaciones y biblioteca.
- Nube: Docker, Azure y AWS.
Codificación de datos
Puede codificar varios tipos de datos en códigos QR, incluyendo texto, URLs, bytes y números.
Corrección de errores
IronQR proporciona mensajes de error detallados y opciones de corrección de errores personalizadas.
Confiado por millones, IronQR es fiable y fácil de usar para ingenieros de todo el mundo. Para comenzar con IronQR, puede instalarlo vía NuGet.
Paso 1: Cree un nuevo proyecto de Visual Studio para generar un código QR
Para comenzar con el código, cree un Proyecto de Visual Studio. Abra Microsoft Visual Studio 2022 y seleccione la opción "Crear un nuevo proyecto".

Seleccione la plantilla de aplicación de Consola de la lista de plantillas

Luego, proporcione el nombre del proyecto y los nombres de la solución. Seleccione la ruta para almacenar los archivos del proyecto

Seleccione la versión .NET requerida. Iré con el último marco .NET 8 en el momento de escribir este artículo.

Una vez que haga clic en el botón de crear, el proyecto se crea y está listo para el desarrollo.
Paso 2: Instalar los paquetes NuGet de QRCoder y IronQR
El paquete NuGet QRCoder puede instalarse utilizando el administrador de paquetes NuGet de Visual Studio, como se muestra a continuación.

O instálelo desde la consola del administrador de paquetes NuGet usando el siguiente comando
dotnet add package QRCoder --version 1.4.3
El paquete NuGet QRCoder está disponible en el sitio web de NuGet aquí

El IronQR también puede instalarse de manera similar usando el administrador de paquetes NuGet de Visual Studio, mostrado a continuación.

También desde la consola del administrador de paquetes NuGet, use el siguiente comando
dotnet add package IronQR --version 2024.4.1

Paso 3: Crea códigos QR usando QRCoder y IronQR
Crear códigos QR en las dos bibliotecas requiere un código simple, vamos a revisarlos
Codificador QR
El siguiente código muestra cómo generar nuestro primer código QR usando QRCoder
using QRCoder;
using System.Drawing;
using System.IO;
namespace QRCoderVsIronQR
{
public class Program
{
public static void Main()
{
// Initialize QRCodeGenerator
using (QRCodeGenerator qrGenerator = new QRCodeGenerator())
// Create QR code data
using (QRCodeData qrCodeData = qrGenerator.CreateQrCode("QRCoder Demo 1", QRCodeGenerator.ECCLevel.Q))
// Initialize the QR code with the data
using (BitmapByteQRCode qrCode = new BitmapByteQRCode(qrCodeData))
{
// Generate the QR code's graphic and store it in a byte array
byte[] qrCodeImage = qrCode.GetGraphic(20);
// Convert the byte array to an image format and save it to disk
using (var file = Image.FromStream(new MemoryStream(qrCodeImage)))
{
file.Save("QrCoderDemo1.png");
}
}
}
}
}using QRCoder;
using System.Drawing;
using System.IO;
namespace QRCoderVsIronQR
{
public class Program
{
public static void Main()
{
// Initialize QRCodeGenerator
using (QRCodeGenerator qrGenerator = new QRCodeGenerator())
// Create QR code data
using (QRCodeData qrCodeData = qrGenerator.CreateQrCode("QRCoder Demo 1", QRCodeGenerator.ECCLevel.Q))
// Initialize the QR code with the data
using (BitmapByteQRCode qrCode = new BitmapByteQRCode(qrCodeData))
{
// Generate the QR code's graphic and store it in a byte array
byte[] qrCodeImage = qrCode.GetGraphic(20);
// Convert the byte array to an image format and save it to disk
using (var file = Image.FromStream(new MemoryStream(qrCodeImage)))
{
file.Save("QrCoderDemo1.png");
}
}
}
}
}Imports QRCoder
Imports System.Drawing
Imports System.IO
Namespace QRCoderVsIronQR
Public Class Program
Public Shared Sub Main()
' Initialize QRCodeGenerator
Using qrGenerator As New QRCodeGenerator()
' Create QR code data
Using qrCodeData As QRCodeData = qrGenerator.CreateQrCode("QRCoder Demo 1", QRCodeGenerator.ECCLevel.Q)
' Initialize the QR code with the data
Using qrCode As New BitmapByteQRCode(qrCodeData)
' Generate the QR code's graphic and store it in a byte array
Dim qrCodeImage() As Byte = qrCode.GetGraphic(20)
' Convert the byte array to an image format and save it to disk
Using file = Image.FromStream(New MemoryStream(qrCodeImage))
file.Save("QrCoderDemo1.png")
End Using
End Using
End Using
End Using
End Sub
End Class
End NamespaceExplicación del código
- Inicialice el
QRCodeGeneratory llame al métodoCreateQrCodepara generar datos de código QR. - Use la clase
BitmapByteQRCodepara generar un array de bytes a partir de los datos del código QR usando el métodoGetGraphic. - Convierta el array de bytes a una imagen usando
Image.FromStream. - Guarde la imagen generada en el disco.
Resultado

IronQR
El siguiente código muestra cómo generar un código QR usando IronQR:
using IronQr;
using IronSoftware.Drawing;
namespace QrCodeWithIronQR
{
public class Program
{
public static void Main()
{
// Prepare a QR Code object
QrCode theQrGen = QrWriter.Write("Awesome IronQR");
// Save QR Code to memory
AnyBitmap myQrImage = theQrGen.Save();
// Save QR Code image to disk
myQrImage.SaveAs("awesome.png");
}
}
}using IronQr;
using IronSoftware.Drawing;
namespace QrCodeWithIronQR
{
public class Program
{
public static void Main()
{
// Prepare a QR Code object
QrCode theQrGen = QrWriter.Write("Awesome IronQR");
// Save QR Code to memory
AnyBitmap myQrImage = theQrGen.Save();
// Save QR Code image to disk
myQrImage.SaveAs("awesome.png");
}
}
}Imports IronQr
Imports IronSoftware.Drawing
Namespace QrCodeWithIronQR
Public Class Program
Public Shared Sub Main()
' Prepare a QR Code object
Dim theQrGen As QrCode = QrWriter.Write("Awesome IronQR")
' Save QR Code to memory
Dim myQrImage As AnyBitmap = theQrGen.Save()
' Save QR Code image to disk
myQrImage.SaveAs("awesome.png")
End Sub
End Class
End NamespaceComo ya puede ver la diferencia en la cantidad de código. La generación de código IronQR requiere menos código.
Explicación del código
- Cree el código QR usando el método
QrWriter.Write, pasando el contenido deseado. - Guarde el código QR en memoria usando el método
Save. - Guarde la imagen del código QR en el disco usando
SaveAs.
Resultado
La salida tiene una marca de agua de IronQR ya que estoy usando una versión de prueba de la biblioteca. Con una versión con licencia, esto se eliminará.

Paso 4: Opciones de personalización con QRCoder y IronQR
Ambas bibliotecas soportan opciones de personalización. Veamos algunas opciones disponibles
Podemos establecer los colores del código QR en QRCoder como a continuación:
using QRCoder;
using System.Drawing;
using System.IO;
namespace QRCoderVsIronQR
{
public class Program
{
public static void Main()
{
// Initialize QRCodeGenerator
using (QRCodeGenerator qrGenerator = new QRCodeGenerator())
// Create QR code data
using (QRCodeData qrCodeData = qrGenerator.CreateQrCode("QRCoder Demo 1", QRCodeGenerator.ECCLevel.Q))
// Initialize the QR code with the data
using (BitmapByteQRCode qrCode = new BitmapByteQRCode(qrCodeData))
{
// Generate the QR code's graphic, specifying foreground and background colors
byte[] qrCodeImage = qrCode.GetGraphic(20, Color.Red, Color.Green);
// Convert the byte array to an image format and save it to disk
using (var file = Image.FromStream(new MemoryStream(qrCodeImage)))
{
file.Save("QrCoderDemo1.png");
}
}
}
}
}using QRCoder;
using System.Drawing;
using System.IO;
namespace QRCoderVsIronQR
{
public class Program
{
public static void Main()
{
// Initialize QRCodeGenerator
using (QRCodeGenerator qrGenerator = new QRCodeGenerator())
// Create QR code data
using (QRCodeData qrCodeData = qrGenerator.CreateQrCode("QRCoder Demo 1", QRCodeGenerator.ECCLevel.Q))
// Initialize the QR code with the data
using (BitmapByteQRCode qrCode = new BitmapByteQRCode(qrCodeData))
{
// Generate the QR code's graphic, specifying foreground and background colors
byte[] qrCodeImage = qrCode.GetGraphic(20, Color.Red, Color.Green);
// Convert the byte array to an image format and save it to disk
using (var file = Image.FromStream(new MemoryStream(qrCodeImage)))
{
file.Save("QrCoderDemo1.png");
}
}
}
}
}Imports QRCoder
Imports System.Drawing
Imports System.IO
Namespace QRCoderVsIronQR
Public Class Program
Public Shared Sub Main()
' Initialize QRCodeGenerator
Using qrGenerator As New QRCodeGenerator()
' Create QR code data
Using qrCodeData As QRCodeData = qrGenerator.CreateQrCode("QRCoder Demo 1", QRCodeGenerator.ECCLevel.Q)
' Initialize the QR code with the data
Using qrCode As New BitmapByteQRCode(qrCodeData)
' Generate the QR code's graphic, specifying foreground and background colors
Dim qrCodeImage() As Byte = qrCode.GetGraphic(20, Color.Red, Color.Green)
' Convert the byte array to an image format and save it to disk
Using file = Image.FromStream(New MemoryStream(qrCodeImage))
file.Save("QrCoderDemo1.png")
End Using
End Using
End Using
End Using
End Sub
End Class
End NamespaceExplicación del código
- Inicialice el
QRCodeGeneratory llame al métodoCreateQrCodepara generar datos de código QR. - Use la clase
BitmapByteQRCodepara generar un array de bytes desde los datos del código QR usando el métodoGetGraphic, especificando los colores del primer plano (rojo) y del fondo (verde). - Convierta el array de bytes a una imagen usando
Image.FromStream. - Guarde la imagen generada en el disco.
Resultado

Podemos establecer colores para la generación de código QR de IronQR como el siguiente código:
using IronQr;
using IronSoftware.Drawing;
using System.Drawing;
namespace QrCodeWithIronQR
{
public class Program
{
public static void Main()
{
// Set options
QrOptions options = new QrOptions(QrErrorCorrectionLevel.Medium, 20);
// Create QR
QrCode myQr = QrWriter.Write("IronQR Generation Demo 1", options);
// Style options
AnyBitmap logoBmp = new AnyBitmap("logo.png");
QrStyleOptions style = new QrStyleOptions
{
BackgroundColor = Color.Aqua,
Dimensions = 300, // px
Margins = 10, // px
Color = Color.Red,
Logo = new QrLogo
{
Bitmap = logoBmp,
Width = 100,
Height = 100,
CornerRadius = 2
}
};
// Save QR Code
AnyBitmap qrImage = myQr.Save(style);
// Save QR Code to local disk
qrImage.SaveAs("advancedQr.png");
}
}
}using IronQr;
using IronSoftware.Drawing;
using System.Drawing;
namespace QrCodeWithIronQR
{
public class Program
{
public static void Main()
{
// Set options
QrOptions options = new QrOptions(QrErrorCorrectionLevel.Medium, 20);
// Create QR
QrCode myQr = QrWriter.Write("IronQR Generation Demo 1", options);
// Style options
AnyBitmap logoBmp = new AnyBitmap("logo.png");
QrStyleOptions style = new QrStyleOptions
{
BackgroundColor = Color.Aqua,
Dimensions = 300, // px
Margins = 10, // px
Color = Color.Red,
Logo = new QrLogo
{
Bitmap = logoBmp,
Width = 100,
Height = 100,
CornerRadius = 2
}
};
// Save QR Code
AnyBitmap qrImage = myQr.Save(style);
// Save QR Code to local disk
qrImage.SaveAs("advancedQr.png");
}
}
}Imports IronQr
Imports IronSoftware.Drawing
Imports System.Drawing
Namespace QrCodeWithIronQR
Public Class Program
Public Shared Sub Main()
' Set options
Dim options As New QrOptions(QrErrorCorrectionLevel.Medium, 20)
' Create QR
Dim myQr As QrCode = QrWriter.Write("IronQR Generation Demo 1", options)
' Style options
Dim logoBmp As New AnyBitmap("logo.png")
Dim style As New QrStyleOptions With {
.BackgroundColor = Color.Aqua,
.Dimensions = 300,
.Margins = 10,
.Color = Color.Red,
.Logo = New QrLogo With {
.Bitmap = logoBmp,
.Width = 100,
.Height = 100,
.CornerRadius = 2
}
}
' Save QR Code
Dim qrImage As AnyBitmap = myQr.Save(style)
' Save QR Code to local disk
qrImage.SaveAs("advancedQr.png")
End Sub
End Class
End NamespaceCon IronQR hay muchas opciones de personalización. En el programa anterior hemos intentado personalizar el color de fondo, el color del código QR, los márgenes. También podemos establecer dimensiones.
Explicación del código
- Primero, cree el objeto
QrOptionspara establecer el nivel de corrección de errores. - Prepare el código QR con el método
QrWriter.Write. - Establezca las opciones de estilo con
QrStyleOptions. - Establezca el color de fondo, color del primer plano, márgenes, dimensiones, e incluso un logotipo para el código QR.
- Guarde la imagen del código QR en el disco local.
Resultado

Licencias
QRCoder es un paquete basado en licencia MIT y es desarrollado con la ayuda de la comunidad. Este paquete es bueno para proyectos de bajo presupuesto. El usuario necesita esperar a que la comunidad resuelva problemas o puede corregir y enviar el código al Repositorio Git con solicitudes de extracción aprobadas.
IronQR requiere una licencia. Cuenta con el respaldo de Iron Software.
Se puede obtener una licencia de prueba de IronQR. La clave obtenida debe colocarse en el archivo appSettings.json aquí:
{
"IronQR.License.LicenseKey": "myKey"
}Conclusión
Elegir entre C# QRCoder y IronQR en última instancia, depende de los requisitos específicos de su proyecto. Si necesita una biblioteca de generación de códigos QR gratuita y de código abierto con muchas opciones de personalización, entonces C# QRCoder podría ser la elección preferida debido a su simplicidad y extensas opciones de personalización.
Si necesita una biblioteca a nivel empresarial que no solo soporte la generación de códigos QR con opciones de personalización sino también la lectura de códigos QR, entonces IronQR sería la elección definitiva. Con la biblioteca IronQR, sus numerosos beneficios y el soporte funcional de Iron Software, los desarrolladores pueden escribir aplicaciones empresariales con facilidad y tranquilidad.
Preguntas Frecuentes
¿Cómo puedo generar códigos QR en C#?
Puedes generar códigos QR en C# usando bibliotecas como QRCoder e IronQR. QRCoder es de código abierto y ofrece una amplia personalización, mientras que IronQR proporciona características avanzadas y soporte multiplataforma, ideal para aplicaciones a nivel empresarial.
¿Cuáles son los beneficios de usar QRCoder en proyectos .NET 6?
QRCoder es beneficioso para proyectos .NET 6 debido a su facilidad de uso, amplias opciones de personalización y soporte para múltiples formatos de codificación. También es gratis bajo la licencia MIT, lo que lo hace adecuado para proyectos con presupuesto restringido.
¿Cómo puedo personalizar los códigos QR usando IronQR?
IronQR permite a los desarrolladores personalizar los códigos QR ajustando parámetros como el color de fondo, el color del código QR, los márgenes, las dimensiones e incluso añadiendo logotipos para mejorar la apariencia del código QR.
¿Cuál es la ventaja de IronQR para aplicaciones multiplataforma?
IronQR soporta aplicaciones multiplataforma incluyendo de escritorio (WPF & MAUI), móviles (Xamarin y MAUI), web (Blazor y WebForms), aplicaciones de consola y entornos en la nube como Docker, Azure y AWS, lo que lo hace ideal para necesidades de desarrollo versátiles.
¿Qué pasos son necesarios para configurar un proyecto de generación de códigos QR en Visual Studio?
Para configurar un proyecto de generación de códigos QR en Visual Studio, necesitas instalar los paquetes NuGet necesarios para QRCoder o IronQR, dependiendo de tu elección. El artículo proporciona instrucciones paso a paso y muestras de código para guiarte a través del proceso.
¿Cómo mejora IronQR la corrección de errores en códigos QR?
IronQR mejora la corrección de errores en códigos QR proporcionando opciones detalladas para asegurar una lectura precisa incluso si el código QR está dañado o parcialmente obstruido. Esto lo hace altamente confiable para aplicaciones críticas.
¿Qué opciones de licencia están disponibles para IronQR?
IronQR requiere una licencia comercial, respaldada por Iron Software, con la opción de obtener una licencia de prueba para propósitos de evaluación. Esto asegura que los proyectos a nivel empresarial tengan acceso a soporte y características robustas.
¿Qué biblioteca debería elegir para un proyecto simple de código QR?
Para proyectos simples de código QR, se recomienda QRCoder debido a su simplicidad, facilidad de uso y rentabilidad, siendo una biblioteca de código abierto bajo la licencia MIT.
¿Puede IronQR leer códigos QR desde varios formatos de imagen?
Sí, IronQR puede leer códigos QR desde varios formatos de imagen, utilizando un Modelo de Aprendizaje Automático avanzado para asegurar una lectura rápida y precisa en diferentes plataformas.





