Pruebe en producción sin marcas de agua.
Funciona donde lo necesite.
Obtén 30 días de producto totalmente funcional.
Ténlo en funcionamiento en minutos.
Acceso completo a nuestro equipo de asistencia técnica durante la prueba del producto
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.
Crear un nuevo proyecto de Visual Studio para generar un código QR
Instale los paquetes NuGet de QRCoder e IronQR para comparar
Crear códigos QR con QRCoder e IronQR
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:
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.
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.
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.
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.
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 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:
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")
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)
Escritorio: Funciona con aplicaciones de escritorio de Windows (WPF y MAUI).
Móvil: Compatible con Xamarin y MAUI.
Web: Compatible con Blazor y WebForms.
Consola: Entornos de aplicaciones y bibliotecas.
Puede codificar varios tipos de datos en los códigos QR, como texto, URL, bytes y números.
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.
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".
Seleccione la plantilla de aplicación Consola de la lista de plantillas
A continuación, indique el nombre del proyecto y los nombres de las soluciones. Seleccione la ruta para almacenar los archivos del proyecto
Seleccione la versión .NET necesaria. En el momento de escribir este artículo, utilizaré el último framework .NET 8.
Una vez pulsado el botón crear, el proyecto queda creado y listo para su desarrollo.
El paquete NuGet QRCoder se puede instalar usando el administrador de paquetes NuGet de Visual Studio como se muestra a continuación.
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
El paquete NuGet de QRCoder está disponible en el sitio web de NuGet aquí
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.
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
La creación de códigos QR en las dos bibliotecas requiere un código sencillo, vamos a comprobarlo
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
Creamos QRCodeGenerator y llamamos al método CreateQrCode para generar el gráfico del código QR
Luego usamos el método QRCoder.BitmapByteQRCode para obtener la matriz de bytes del método GetGraphic
A continuación, guardamos el flujo de bytes como imagen utilizando el método Image.FromStream
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
Como ya se puede ver la diferencia en la cantidad de código. La generación de código IronQR requiere menos código.
Creamos un código QR utilizando el método QrWriter.Write() y pasando el contenido.
A continuación, guarde el código QR en la memoria utilizando el método Save().
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á.
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
Creamos QRCodeGenerator y llamamos al método CreateQrCode para generar el gráfico del código QR
A continuación, utilizamos el método QRCoder.BitmapByteQRCode() para obtener la matriz de bytes del método GetGraphic
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.
Luego guardamos el flujo de bytes como imagen utilizando el método Image.FromStream()
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
}
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.
En primer lugar, creamos el objeto de opción para establecer el nivel de corrección de errores
Luego preparamos el código QR con el método QrWriter.Write()
A continuación, establecemos las opciones de estilo con QrStyleOptions
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
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
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.