Pruebas en un entorno real
Pruebe en producción sin marcas de agua.
Funciona donde lo necesites.
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 destacables 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.
QRCoder es una librería de código abierto escrita en C# e implementación de Códigos QR que permite generar Códigos QR según la norma 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, que facilita a los desarrolladores la generación de códigos QR/texto de código QR con el mínimo esfuerzo. 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 de C# QR Code desarrollada y mantenida por **Software de hierro. 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 una gran personalización Generación de códigos QR. 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 es compatible con lectura de códigos QR a partir de varios formatos de imagen, como 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)
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 empezar a utilizar IronQR, puede instalarlo a través de NuGet.
Para empezar con el código, creemos un archivo Visual Studio Proyecto. 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.
En QRCoder El paquete NuGet puede instalarse mediante el gestor 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í
En IronQR también puede instalarse de forma similar utilizando el gestor de paquetes NuGet de Visual Studio, que 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
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.
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 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
Podemos establecer colores para IronQR generación de código QR 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.
QRCoder es un paquete basado en la licencia MIT y desarrollado 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 que se utilizarán en las aplicaciones. Cuenta con 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 en última instancia de los requisitos específicos de su 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 de nivel empresarial que admita no sólo 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. Así que en última instancia, con la biblioteca IronQR, sus muchos beneficios y funcionalidad de apoyo de **Software de hierrolos desarrolladores pueden escribir aplicaciones empresariales con facilidad y tranquilidad.
9 productos API .NET para sus documentos de oficina