USO DE IRONQR

Cómo generar código QR utilizando QRCoder comparar a IronQR en .NET 6

Jordi Bardia
Jordi Bardia
29 de abril, 2024
Compartir:

Generación de códigos QR en C#

La creación de códigos QR en aplicaciones C# es un requisito común para los desarrolladores, especialmente para aplicaciones que implican la identificación de productos, la venta de entradas o compartir URL y otros datos fácilmente. Hay varias bibliotecas disponibles para generar códigos QR en C#. Dos opciones notables son QRCoder y IronQR. Aquí, exploraremos ambas, comparando sus capacidades, facilidad de uso, rendimiento y otros factores relevantes para los 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 código QR utilizando QRCoder comparar a IronQR en .NET 6

  1. Crear un nuevo proyecto de Visual Studio para generar un código QR

  2. Instale los paquetes NuGet de QRCoder e IronQR para comparar

  3. Crear códigos QR con QRCoder e IronQR

  4. Opciones de personalización con QRCoder e IronQR

QRCoder

QRCoder es una biblioteca de código abierto escrita en C# y una implementación de códigos QR que te permite generar códigos QR según lo definido por 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.

Estas son las principales características y ventajas de QRCoder:

1. 1. Facilidad de uso

C# QRCoder ofrece una API sencilla e intuitiva, lo que facilita a los desarrolladores generar códigos QR/ texto de código QR con un esfuerzo mínimo. Su sencillez permite a desarrolladores de todos los niveles integrar rápidamente la generación de códigos QR en sus proyectos.

2. Amplias opciones de personalización

Una de las características más destacadas de QRCoder es su capacidad para personalizar los códigos QR según requisitos específicos. Los desarrolladores pueden ajustar parámetros como el nivel de corrección de errores, el tamaño, el color e incluso incrustar logotipos o imágenes dentro del código QR.

3. Múltiples formatos de codificación

QRCoder admite varios formatos de codificación, lo que permite a los desarrolladores codificar distintos tipos de datos en códigos QR. Ya se trate de texto sin formato, URL, 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, lo que garantiza su legibilidad y fiabilidad en diferentes dispositivos y condiciones de escaneado. Esta fiabilidad es crucial para las aplicaciones en las que los códigos QR sirven de puente entre las interacciones físicas y digitales.

5. Código abierto y desarrollo activo

C# QRCoder es un proyecto de código abierto, lo que permite a los desarrolladores contribuir a su desarrollo y garantizar mejoras y actualizaciones continuas. Este compromiso activo con la comunidad fomenta la innovación y garantiza que la biblioteca siga siendo relevante en el panorama tecnológico en constante evolución.

IronQR

IronQR es una potente biblioteca C# de códigos QR desarrollada y mantenida por Iron Software. Permite a los ingenieros de software de C# detectar, leer y crear códigos QR en aplicaciones y sitios web .NET. Estas son algunas de las principales características de IronQR:

Generación de códigos QR

IronQR permite la generación de códigos QR altamente personalizables. Puedes crear códigos QR con varias opciones, como redimensionamiento, márgenes, bordes y recoloración.

using IronQr;
using IronSoftware.Drawing;
// 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;
// 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
' Prepare a QR Code object
Private theQrGen As QrCode = QrWriter.Write("Awesome IronQR")
' Save QR Code to memory
Private myQrImage As AnyBitmap = theQrGen.Save()
' Save QR Code image to disk
myQrImage.SaveAs("awesome.png")
$vbLabelText   $csharpLabel

Lectura de códigos QR

IronQR utiliza un modelo avanzado de aprendizaje automático para la detección de códigos QR. Este modelo garantiza una lectura precisa y rápida de los códigos QR. IronQR admite 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;
// 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 an get all embedded QR Codes
IEnumerable<QrResult> results = reader.Read(imageInput);
using IronQr;
using IronSoftware.Drawing;
using System.Collections.Generic;
// 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 an get all embedded QR Codes
IEnumerable<QrResult> results = reader.Read(imageInput);
Imports IronQr
Imports IronSoftware.Drawing
Imports System.Collections.Generic
' Read QR code
Private inputBmp = AnyBitmap.FromFile("awesome.png")
' Load the image into QrImageInput
Private imageInput As New QrImageInput(inputBmp)
' Create the QR Reader object
Private reader As New QrReader()
' Read the Input an get all embedded QR Codes
Private results As IEnumerable(Of QrResult) = reader.Read(imageInput)
$vbLabelText   $csharpLabel

Compatibilidad multiplataforma

  1. Escritorio: Funciona con aplicaciones de escritorio de Windows (WPF y MAUI).

  2. Móvil: Compatible con Xamarin y MAUI.

  3. Web: Compatible con Blazor y WebForms.

  4. Consola: Entornos de aplicaciones y bibliotecas.

  5. Nube: Docker, Azure y AWS.

Codificación de datos

Puede codificar varios tipos de datos en los códigos QR, como texto, URL, bytes y números.

Corrección de errores

IronQR proporciona mensajes de error detallados y opciones personalizadas de corrección de errores.

IronQR cuenta con la confianza de millones de ingenieros de todo el mundo por su fiabilidad y facilidad de uso. Para comenzar con IronQR, puede instalarlo a través de NuGet.

Paso 1: Crear un nuevo proyecto de Visual Studio para generar un código QR

Para comenzar con el código, creemos un proyecto de Visual Studio. Abra Microsoft Visual Studio 2022 y seleccione la opción "Crear un nuevo proyecto".

Cómo generar un código QR usando QRCoder en comparación con IronQR en .NET 6: Figura 1 - Abra Visual Studio y haga clic en la opción "Crear un nuevo proyecto"

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

Cómo generar un código QR usando QRCoder en comparación con IronQR en .NET 6: Figura 2 - Seleccione el tipo de proyecto como Aplicación de Consola.

A continuación, indique el nombre del proyecto y los nombres de las soluciones. Seleccione la ruta para almacenar los archivos del proyecto

Cómo generar un código QR usando QRCoder en comparación con IronQR en .NET 6: Figura 3: Configure su proyecto especificando el nombre del proyecto, la ubicación y el nombre de la solución, luego haga clic en Siguiente.

Seleccione la versión .NET necesaria. En el momento de escribir este artículo, utilizaré el último framework .NET 8.

Cómo generar un código QR usando QRCoder comparado con IronQR en .NET 6: Figura 4 - Seleccione la última versión de .NET Framework y haga clic en el botón Crear.

Una vez pulsado el botón crear, el proyecto queda creado y listo para su desarrollo.

Paso 2: Instalar los paquetes NuGet QRCoder e IronQR

El paquete NuGet QRCoder se puede instalar usando el administrador de paquetes NuGet de Visual Studio como se muestra a continuación.

Cómo generar un código QR usando QRCoder comparado con IronQR en .NET 6: Figura 5 - Instalar QRCoder utilizando el Administrador de Paquetes NuGet para Solución buscando QRCoder en la barra de búsqueda del Administrador de Paquetes NuGet, luego seleccione el proyecto y haga clic en el botón Instalar.

O instálelo desde la consola del gestor de paquetes NuGet utilizando el siguiente comando

dotnet add package QRCoder --version 1.4.3
dotnet add package QRCoder --version 1.4.3
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'dotnet add package QRCoder --version 1.4.3
$vbLabelText   $csharpLabel

El paquete NuGet de QRCoder está disponible en el sitio web de NuGet aquí

Cómo generar un código QR usando QRCoder comparado con IronQR en .NET 6: Figura 6 - Paquete NuGet de QRCoder

El IronQR también se puede instalar de manera similar utilizando el administrador de paquetes NuGet de Visual Studio, como se muestra a continuación.

Cómo generar un código QR usando QRCoder en comparación con IronQR en .NET 6: Figura 7 - Instale IronQR usando el Administrador de paquetes NuGet para Solución buscando "IronQR" en la barra de búsqueda del Administrador de paquetes NuGet, luego seleccione el proyecto y haga clic en el botón Instalar.

También desde la consola del gestor de paquetes NuGet, utilice el siguiente comando

dotnet add package IronQR --version 2024.4.1
dotnet add package IronQR --version 2024.4.1
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'dotnet add package IronQR --version 2024.4.1
$vbLabelText   $csharpLabel

Cómo generar un código QR usando QRCoder en comparación con IronQR en .NET 6: Figura 8 - Paquete NuGet de IronQR

Paso 3: Crear códigos QR con QRCoder e IronQR

La creación de códigos QR en las dos bibliotecas requiere un código sencillo, vamos a comprobarlo

QRCoder

El siguiente código muestra cómo generar nuestro primer código QR utilizando QRCoder

using QRCoder;
using System.Drawing;
namespace QRCoderVsIronQR
{
public class Program
{
    public static void Main()
    {
            using (QRCodeGenerator qrGenerator = new QRCodeGenerator())
            using (QRCodeData qrCodeData = qrGenerator.CreateQrCode("QRCoder Demo 1", QRCodeGenerator.ECCLevel.Q))
            using (var qrCode = new QRCoder.BitmapByteQRCode(qrCodeData))
            {
                var qrCodeImage = qrCode.GetGraphic(20);
                var file = Image.FromStream(new MemoryStream(qrCodeImage));
                file.Save("QrCoderDemo1.png");
            }
        }
    }
}
using QRCoder;
using System.Drawing;
namespace QRCoderVsIronQR
{
public class Program
{
    public static void Main()
    {
            using (QRCodeGenerator qrGenerator = new QRCodeGenerator())
            using (QRCodeData qrCodeData = qrGenerator.CreateQrCode("QRCoder Demo 1", QRCodeGenerator.ECCLevel.Q))
            using (var qrCode = new QRCoder.BitmapByteQRCode(qrCodeData))
            {
                var qrCodeImage = qrCode.GetGraphic(20);
                var file = Image.FromStream(new MemoryStream(qrCodeImage));
                file.Save("QrCoderDemo1.png");
            }
        }
    }
}
Imports QRCoder
Imports System.Drawing
Namespace QRCoderVsIronQR
Public Class Program
	Public Shared Sub Main()
			Using qrGenerator As New QRCodeGenerator()
			Using qrCodeData As QRCodeData = qrGenerator.CreateQrCode("QRCoder Demo 1", QRCodeGenerator.ECCLevel.Q)
			Using qrCode = New QRCoder.BitmapByteQRCode(qrCodeData)
				Dim qrCodeImage = qrCode.GetGraphic(20)
				Dim file = Image.FromStream(New MemoryStream(qrCodeImage))
				file.Save("QrCoderDemo1.png")
			End Using
			End Using
			End Using
	End Sub
End Class
End Namespace
$vbLabelText   $csharpLabel

Código Explicación

  1. Creamos QRCodeGenerator y llamamos al método CreateQrCode para generar el gráfico del código QR

  2. Luego usamos el método QRCoder.BitmapByteQRCode para obtener la matriz de bytes del método GetGraphic

  3. A continuación, guardamos el flujo de bytes como imagen utilizando el método Image.FromStream

  4. El código QR de salida puede verse a continuación

Salida

Cómo generar un código QR usando QRCoder en comparación con IronQR en .NET 6: Figura 9 - Salida: Imagen del código QR generada usando la biblioteca QRCoder.

IronQR

El siguiente código muestra cómo generar un código QR utilizando 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 Namespace
$vbLabelText   $csharpLabel

Como ya se puede ver la diferencia en la cantidad de código. La generación de código IronQR requiere menos código.

Código Explicación

  1. Creamos un código QR utilizando el método QrWriter.Write() y pasando el contenido.

  2. A continuación, guarde el código QR en la memoria utilizando el método Save().

  3. Por último, guardamos la imagen utilizando el método SaveAs().

Salida

La salida tiene una marca de agua IronQR, ya que estoy utilizando una versión de prueba de la biblioteca. Con una versión con licencia, esto se eliminará.

Cómo generar un código QR usando QRCoder en comparación con IronQR en .NET 6: Figura 10 - Resultado: Imagen de código QR generada usando IronQR

Paso 4: Opciones de personalización con QRCoder y IronQR

Ambas bibliotecas admiten opciones de personalización. Veamos algunas opciones disponibles

Podemos establecer los colores del código QR en QRCoder como se muestra a continuación:

using QRCoder;
using System.Drawing;
namespace QRCoderVsIronQR
{
public class Program
{
    public static void Main()
    {
            using (QRCodeGenerator qrGenerator = new QRCodeGenerator())
            using (QRCodeData qrCodeData = qrGenerator.CreateQrCode("QRCoder Demo 1", QRCodeGenerator.ECCLevel.Q))
            using (var qrCode = new QRCoder.BitmapByteQRCode(qrCodeData))
            {                
                var qrCodeImage = qrCode.GetGraphic(20, [255,0,0], [0,255, 0]); // can also use html hex color notation
                var file = Image.FromStream(new MemoryStream(qrCodeImage));
                file.Save("QrCoderDemo1.png");
            }
        }
    }
}
using QRCoder;
using System.Drawing;
namespace QRCoderVsIronQR
{
public class Program
{
    public static void Main()
    {
            using (QRCodeGenerator qrGenerator = new QRCodeGenerator())
            using (QRCodeData qrCodeData = qrGenerator.CreateQrCode("QRCoder Demo 1", QRCodeGenerator.ECCLevel.Q))
            using (var qrCode = new QRCoder.BitmapByteQRCode(qrCodeData))
            {                
                var qrCodeImage = qrCode.GetGraphic(20, [255,0,0], [0,255, 0]); // can also use html hex color notation
                var file = Image.FromStream(new MemoryStream(qrCodeImage));
                file.Save("QrCoderDemo1.png");
            }
        }
    }
}
Imports QRCoder
Imports System.Drawing
Namespace QRCoderVsIronQR
Public Class Program
	Public Shared Sub Main()
			Using qrGenerator As New QRCodeGenerator()
			Using qrCodeData As QRCodeData = qrGenerator.CreateQrCode("QRCoder Demo 1", QRCodeGenerator.ECCLevel.Q)
			Using qrCode = New QRCoder.BitmapByteQRCode(qrCodeData)
				Dim qrCodeImage = qrCode.GetGraphic(20, (255,0,0), (0,255, 0)) ' can also use html hex color notation
				Dim file = Image.FromStream(New MemoryStream(qrCodeImage))
				file.Save("QrCoderDemo1.png")
			End Using
			End Using
			End Using
	End Sub
End Class
End Namespace
$vbLabelText   $csharpLabel

Código Explicación

  1. Creamos QRCodeGenerator y llamamos al método CreateQrCode para generar el gráfico del código QR

  2. A continuación, utilizamos el método QRCoder.BitmapByteQRCode() para obtener la matriz de bytes del método GetGraphic

  3. En el GetGraphic podemos establecer los colores de fondo y de línea. Hemos utilizado el color rojo [255,0,0] R,G,B para el color de la línea y verde [0,255,0] para el fondo.

  4. Luego guardamos el flujo de bytes como imagen utilizando el método Image.FromStream()

  5. El código QR de salida puede verse a continuación

Salida

Cómo generar un código QR utilizando QRCoder comparado con IronQR en .NET 6: Figura 11 - Salida: Imagen de código QR colorida generada usando las características de personalización de QRCoder.

Podemos establecer colores para la generación de códigos QR con IronQR como el siguiente código:

using IronQr;
using IronSoftware.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;
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
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
}
$vbLabelText   $csharpLabel

Con 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 fijar las dimensiones.

Código Explicación

  1. En primer lugar, creamos el objeto de opción para establecer el nivel de corrección de errores

  2. Luego preparamos el código QR con el método QrWriter.Write()

  3. A continuación, establecemos las opciones de estilo con QrStyleOptions

  4. Establecemos el color de fondo, el color de primer plano, los márgenes, las dimensiones y también un logotipo para el código QR

  5. A continuación, guardamos la imagen del código QR en el disco local.

Salida

Cómo generar un código QR usando QRCoder en comparación con IronQR en .NET 6: Figura 12 - Salida: Imagen de código QR colorida generada usando IronQR y sus características de personalización.

Licencias

QRCoder es un paquete basado en la licencia MIT y se desarrolla con la ayuda de la comunidad. Este paquete es adecuado para proyectos de bajo presupuesto. El usuario tiene que esperar a que la comunidad resuelva los problemas o puede arreglar y empujar el código al repositorio Git con pull requests aprobadas.

IronQR para ser utilizado en aplicaciones. Tiene el respaldo de Iron Software.

IronQR que se puede obtener. La clave obtenida debe colocarse aquí en el archivo appSettings.json:

{
   "IronQR.License.LicenseKey":"myKey"
}
{
   "IronQR.License.LicenseKey":"myKey"
}
If True Then
   "IronQR.License.LicenseKey":"myKey"
End If
$vbLabelText   $csharpLabel

Conclusión

Elegir entre C# QRCoder y IronQR depende finalmente de los requisitos específicos de tu proyecto. Si necesitas una librería 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 opción preferida debido a su simplicidad y amplias opciones de personalización.

Si necesita una biblioteca a nivel empresarial que no solo admita la generación de códigos QR con opciones de personalización, sino que también permita la lectura de códigos QR, entonces IronQR sería la elección definitiva. Así que, en última instancia, con la biblioteca IronQR, sus muchos beneficios y la funcionalidad de soporte de Iron Software, los desarrolladores pueden escribir aplicaciones empresariales con facilidad y tranquilidad.

Jordi Bardia
Ingeniero de software
Jordi es más competente en Python, C# y C++, cuando no está aprovechando sus habilidades en Iron Software; está programando juegos. Compartiendo responsabilidades en las pruebas de productos, el desarrollo de productos y la investigación, Jordi añade un inmenso valor a la mejora continua de los productos. La variada experiencia le mantiene desafiado y comprometido, y dice que es uno de sus aspectos favoritos de trabajar con Iron Software. Jordi creció en Miami, Florida, y estudió Informática y Estadística en la Universidad de Florida.
< ANTERIOR
Cómo crear una aplicación generadora de códigos QR en C#
SIGUIENTE >
Cómo generar un código QR en VB .NET

¿Listo para empezar? Versión: 2025.4 acaba de salir

Ver licencias >