Saltar al pie de página
COMPARAR CON OTROS COMPONENTES

Una Comparación Entre IronBarcode y QrCoder en C#

En este tutorial, compararemos dos bibliotecas ampliamente utilizadas de C# - IronBarcode y QrCoder - para trabajar con códigos QR y códigos de barras.

Comencemos con una breve introducción a ambas bibliotecas:

IronBarcode

IronBarcode es una biblioteca creada y mantenida por Iron Software que permite a los ingenieros de software en C# leer y escribir códigos de barras y códigos QR en aplicaciones y sitios web .NET. Está disponible en NuGet para todos los .NET Frameworks y .NET Core Frameworks. IronBarcode requiere solo una línea de código para leer o escribir códigos de barras.

Codificador QR

QRCoder es una biblioteca simple de C# que te permite crear códigos QR. No tiene dependencias de otras bibliotecas y está disponible en NuGet en versiones PCL de .NET Framework y .NET Core.

Ambas bibliotecas deberían tener las siguientes características principales:

  • Escanear código QR
  • Escanear código de barras
  • Generar código QR
  • Generar código de barras

Implementaremos todas estas características de ambas bibliotecas y compararemos su rendimiento.

Primero, instalemos ambas bibliotecas en nuestro proyecto de Visual Studio. Dado que ambas bibliotecas tienen sus propios paquetes NuGet, las instalaremos a través de la Consola del Administrador de Paquetes de NuGet.

Instalar IronBarcode

Para instalar IronBarcode, escribe el siguiente comando en la Consola del Administrador de Paquetes:

Install-Package BarCode

Esto instalará la biblioteca IronBarcode en nuestro proyecto.

A Comparison Between IronBarcode and QrCoder C# - Figure 1: Instalación de IronBarcode

Instalación de IronBarcode

Instalar QRCoder

Escribe el siguiente comando en la Consola del Administrador de Paquetes:

Install-Package QRCoder

Esto instalará la biblioteca QrCoder en nuestro proyecto.

A Comparison Between IronBarcode and QrCoder C# - Figure 2: Instalación de QrCoder

Instalación de QrCoder

Ahora, generaremos nuestro primer código QR utilizando ambas bibliotecas.

Generar códigos QR usando IronBarcode

El siguiente código generará un código QR.

using System;
using System.Diagnostics;
using IronBarCode;

class Program
{
    static void Main()
    {
        // Create a stopwatch to measure the execution time
        Stopwatch stopwatch = new Stopwatch();
        stopwatch.Start();

        // Generate a QR code
        var qrCode = QRCodeWriter.CreateQrCode("Iron Barcode Vs QrCoder");

        // Save the generated QR code as a PNG file
        qrCode.SaveAsPng(@"D:\Barcode Images\QrCodeByIronBarcode.png");

        // Stop the stopwatch and output the execution time
        stopwatch.Stop();
        Console.WriteLine($"Execution Time: {stopwatch.ElapsedMilliseconds} ms");
    }
}
using System;
using System.Diagnostics;
using IronBarCode;

class Program
{
    static void Main()
    {
        // Create a stopwatch to measure the execution time
        Stopwatch stopwatch = new Stopwatch();
        stopwatch.Start();

        // Generate a QR code
        var qrCode = QRCodeWriter.CreateQrCode("Iron Barcode Vs QrCoder");

        // Save the generated QR code as a PNG file
        qrCode.SaveAsPng(@"D:\Barcode Images\QrCodeByIronBarcode.png");

        // Stop the stopwatch and output the execution time
        stopwatch.Stop();
        Console.WriteLine($"Execution Time: {stopwatch.ElapsedMilliseconds} ms");
    }
}
Imports System
Imports System.Diagnostics
Imports IronBarCode

Friend Class Program
	Shared Sub Main()
		' Create a stopwatch to measure the execution time
		Dim stopwatch As New Stopwatch()
		stopwatch.Start()

		' Generate a QR code
		Dim qrCode = QRCodeWriter.CreateQrCode("Iron Barcode Vs QrCoder")

		' Save the generated QR code as a PNG file
		qrCode.SaveAsPng("D:\Barcode Images\QrCodeByIronBarcode.png")

		' Stop the stopwatch and output the execution time
		stopwatch.Stop()
		Console.WriteLine($"Execution Time: {stopwatch.ElapsedMilliseconds} ms")
	End Sub
End Class
$vbLabelText   $csharpLabel

La instancia de Stopwatch se crea para medir el tiempo de ejecución del programa para analizar la eficiencia de la biblioteca.

A Comparison Between IronBarcode and QrCoder C# - Figure 3: IronBarcode Result

Código de barras generado a partir de IronBarcode

Tiempo de ejecución de IronBarcode

IronBarcode tarda 3503 ms en generar y guardar un código QR.

A Comparison Between IronBarcode and QrCoder C# - Figure 4: Execution Time

Tiempo de ejecución de IronBarcode para generar nuevos códigos de barras

Crea un código QR con QRCoder

El siguiente código de ejemplo generará un código QR usando QrCoder.

using System;
using System.Drawing;
using QRCoder;

class Program
{
    static void Main()
    {
        // Initialize the QRCodeGenerator
        QRCodeGenerator qrGenerator = new QRCodeGenerator();

        // Generate QRCodeData with specified error correction level
        QRCodeData qrCodeData = qrGenerator.CreateQrCode("Iron Barcode Vs QrCoder", QRCodeGenerator.ECCLevel.Q);

        // Create QRCode object
        QRCode qrCode = new QRCode(qrCodeData);

        // Convert QRCode to Bitmap
        Bitmap qrCodeImage = qrCode.GetGraphic(20);

        // Save the QR code as a PNG file
        qrCodeImage.Save(@"D:\Barcode Images\QrCodeByQrCoder.png");
    }
}
using System;
using System.Drawing;
using QRCoder;

class Program
{
    static void Main()
    {
        // Initialize the QRCodeGenerator
        QRCodeGenerator qrGenerator = new QRCodeGenerator();

        // Generate QRCodeData with specified error correction level
        QRCodeData qrCodeData = qrGenerator.CreateQrCode("Iron Barcode Vs QrCoder", QRCodeGenerator.ECCLevel.Q);

        // Create QRCode object
        QRCode qrCode = new QRCode(qrCodeData);

        // Convert QRCode to Bitmap
        Bitmap qrCodeImage = qrCode.GetGraphic(20);

        // Save the QR code as a PNG file
        qrCodeImage.Save(@"D:\Barcode Images\QrCodeByQrCoder.png");
    }
}
Imports System
Imports System.Drawing
Imports QRCoder

Friend Class Program
	Shared Sub Main()
		' Initialize the QRCodeGenerator
		Dim qrGenerator As New QRCodeGenerator()

		' Generate QRCodeData with specified error correction level
		Dim qrCodeData As QRCodeData = qrGenerator.CreateQrCode("Iron Barcode Vs QrCoder", QRCodeGenerator.ECCLevel.Q)

		' Create QRCode object
		Dim qrCode As New QRCode(qrCodeData)

		' Convert QRCode to Bitmap
		Dim qrCodeImage As Bitmap = qrCode.GetGraphic(20)

		' Save the QR code as a PNG file
		qrCodeImage.Save("D:\Barcode Images\QrCodeByQrCoder.png")
	End Sub
End Class
$vbLabelText   $csharpLabel

QrCoder no proporciona una función incorporada para guardar el código QR como una imagen. Sin embargo, podemos guardarlo analizando el QrCoder en un objeto Bitmap. Luego podemos guardar el código QR usando la función de guardar proporcionada por Bitmap.

A Comparison Between IronBarcode and QrCoder C# - Figure 5: QR Coder Result

Código de barras generado por QrCoder

Tiempo de ejecución de Qrcoder

QrCoder tarda 592 ms en generar y guardar un código QR.

A Comparison Between IronBarcode and QrCoder C# - Figure 6: QrCoder's Execution Time

El tiempo que tardó QrCoder en generar un nuevo código de barras

Análisis

El tiempo de ejecución tomado por IronBarcode es de 3503 ms, mientras que QrCoder solo toma 592 ms. Esto hace que QrCoder sea más rápido que IronBarcode en términos de rendimiento.

Generar códigos QR es mucho más sencillo en IronBarcode, ya que solo necesitamos escribir dos líneas de código. Con la biblioteca QrCoder, se necesitan cinco líneas de código.

IronBarcode también proporciona una función incorporada para guardar códigos QR generados en un archivo, mientras que QrCoder no. Tenemos que crear un objeto de bitmap para guardar el código QR en un archivo. Esto requiere que creemos cuatro objetos para generar códigos QR usando QrCoder. Solo necesitamos crear un objeto en IronBarcode para hacer lo mismo.

A continuación, generaremos códigos de barras usando ambas bibliotecas.

Generar un código de barras usando IronBarcode

El siguiente código generará un código de barras usando IronBarcode:

using IronBarCode;

class Program
{
    static void Main()
    {
        // Generate a barcode with Code128 encoding
        var barcode = BarcodeWriter.CreateBarcode("Iron Barcode Vs QrCoder", BarcodeEncoding.Code128);

        // Save the generated barcode as a PNG file
        barcode.SaveAsPng(@"D:\Barcode Images\BarcodeByIronBarcode.png");
    }
}
using IronBarCode;

class Program
{
    static void Main()
    {
        // Generate a barcode with Code128 encoding
        var barcode = BarcodeWriter.CreateBarcode("Iron Barcode Vs QrCoder", BarcodeEncoding.Code128);

        // Save the generated barcode as a PNG file
        barcode.SaveAsPng(@"D:\Barcode Images\BarcodeByIronBarcode.png");
    }
}
Imports IronBarCode

Friend Class Program
	Shared Sub Main()
		' Generate a barcode with Code128 encoding
		Dim barcode = BarcodeWriter.CreateBarcode("Iron Barcode Vs QrCoder", BarcodeEncoding.Code128)

		' Save the generated barcode as a PNG file
		barcode.SaveAsPng("D:\Barcode Images\BarcodeByIronBarcode.png")
	End Sub
End Class
$vbLabelText   $csharpLabel
A Comparison Between IronBarcode and QrCoder C# - Figure 7: Código de barras generado con IronBarcode

Código de barras generado con IronBarcode

El tiempo de ejecución tomado para generar un código de barras usando IronBarcode es el siguiente:

A Comparison Between IronBarcode and QrCoder C# - Figure 8: Execution time for IronBarcode to generate a new Barcode

Tiempo de generación del código de barras de IronBarcode

Toma 3756 ms o 3.76 segundos generar un código de barras.

Generar un código de barras usando QrCoder

Vale la pena notar que la biblioteca QrCoder no proporciona la funcionalidad para crear códigos de barras. Por lo tanto, si necesitas crear códigos de barras, IronBarcode es la mejor opción.

Con respecto al escaneo de códigos QR, veamos cuál biblioteca es la mejor opción.

Leer un código QR con IronBarcode

El siguiente código leerá un código QR usando IronBarcode.

using System;
using IronBarCode;

class Program
{
    static void Main()
    {
        // Read QR code from an image file
        BarcodeResults results = BarcodeReader.Read(@"D:\Barcode Images\QrcodeByIronBarcode.png");

        // Check if any QR codes are found
        if (results != null)
        {
            // Loop through each result and print extracted text
            foreach (BarcodeResult result in results)
            {
                Console.WriteLine("Extracted text from QR Code is: " + result.Text);
            }
        }
    }
}
using System;
using IronBarCode;

class Program
{
    static void Main()
    {
        // Read QR code from an image file
        BarcodeResults results = BarcodeReader.Read(@"D:\Barcode Images\QrcodeByIronBarcode.png");

        // Check if any QR codes are found
        if (results != null)
        {
            // Loop through each result and print extracted text
            foreach (BarcodeResult result in results)
            {
                Console.WriteLine("Extracted text from QR Code is: " + result.Text);
            }
        }
    }
}
Imports System
Imports IronBarCode

Friend Class Program
	Shared Sub Main()
		' Read QR code from an image file
		Dim results As BarcodeResults = BarcodeReader.Read("D:\Barcode Images\QrcodeByIronBarcode.png")

		' Check if any QR codes are found
		If results IsNot Nothing Then
			' Loop through each result and print extracted text
			For Each result As BarcodeResult In results
				Console.WriteLine("Extracted text from QR Code is: " & result.Text)
			Next result
		End If
	End Sub
End Class
$vbLabelText   $csharpLabel

IronBarcode devuelve un Enumerable como resultado de la lectura de códigos QR. Necesitamos recorrer el Enumerable para recuperar cada resultado. Esta característica es beneficiosa para leer códigos QR de un documento o de una imagen que tiene más de un código QR.

A Comparison Between IronBarcode and QrCoder C# - Figure 9: IronBarcode's QR Code Scanning Execution Time

El tiempo que tarda IronBarcode en leer/escanear todos los códigos QR de un documento

Tarda 3136 ms o 3.1 segundos usando IronBarcode.

Leer un código QR usando QrCoder

La Biblioteca QrCoder no proporciona la funcionalidad de leer o escanear un código QR.

Leer un código de barras usando IronBarcode

El siguiente código escaneará el código de barras usando IronBarcode.

using System;
using IronBarCode;

class Program
{
    static void Main()
    {
        // Read barcode from an image file
        BarcodeResults results = BarcodeReader.Read(@"D:\Barcode Images\BarcodeByIronBarcode.png");

        // Check if any barcodes are found
        if (results != null)
        {
            // Loop through each result and print extracted text
            foreach (BarcodeResult result in results)
            {
                Console.WriteLine("Text Extracted from Barcode is: " + result.Text);
            }
        }
    }
}
using System;
using IronBarCode;

class Program
{
    static void Main()
    {
        // Read barcode from an image file
        BarcodeResults results = BarcodeReader.Read(@"D:\Barcode Images\BarcodeByIronBarcode.png");

        // Check if any barcodes are found
        if (results != null)
        {
            // Loop through each result and print extracted text
            foreach (BarcodeResult result in results)
            {
                Console.WriteLine("Text Extracted from Barcode is: " + result.Text);
            }
        }
    }
}
Imports System
Imports IronBarCode

Friend Class Program
	Shared Sub Main()
		' Read barcode from an image file
		Dim results As BarcodeResults = BarcodeReader.Read("D:\Barcode Images\BarcodeByIronBarcode.png")

		' Check if any barcodes are found
		If results IsNot Nothing Then
			' Loop through each result and print extracted text
			For Each result As BarcodeResult In results
				Console.WriteLine("Text Extracted from Barcode is: " & result.Text)
			Next result
		End If
	End Sub
End Class
$vbLabelText   $csharpLabel

IronBarcode devuelve Enumerable como resultado de leer códigos de barras. Necesitamos recorrerlo para obtener cada resultado. Es beneficioso para leer códigos de barras de un documento o imagen que tiene más de un código de barras.

El resultado generado por el código anterior es el siguiente:

A Comparison Between IronBarcode and QrCoder C# - Figure 10: Execution time for IronBarcode Scan one or more barcodes

El tiempo que IronBarcode tarda en escanear un código de barras contenido en un PDF o una imagen

Leer un código de barras usando QrCoder

QrCoder Library no proporciona la funcionalidad de leer o escanear Código QR.

Ahora, discutamos las opciones de licencia de ambas bibliotecas.

Licencias

Licencias para IronBarcode

IronBarcode es gratis para desarrollo. Sin embargo, requiere una licencia para implementación fuera del entorno de desarrollo de Visual Studio. El rango de precios de la licencia es de $liteLicense a $unlimitedLicense (USD). Puedes obtener un descuento si compras el Iron Suite completo.

A Comparison Between IronBarcode and QrCoder C# - Figure 11: Iron Licenses

Check out IronBarcode's [licensing page](/csharp/barcode/licensing/) for more information about available licenses.

Licencias para QrCoder

QrCoder es de código abierto, por lo tanto, no requiere ninguna licencia. Puedes usarlo libremente en cualquier tipo de entorno. También puedes contribuir a su código fuente si te gusta el desarrollo de código abierto.

Cuándo usar QrCoder

Si solo necesitamos la funcionalidad de generar códigos QR, QRCoder es la mejor opción a usar ya que es gratuito y no requiere ningún pago o suscripción.

Cuándo utilizar IronBarcode

IronBarcode es una gran opción cuando necesitamos funcionalidades más allá de generar códigos QR, tales como:

  • Leer uno o varios códigos de barras y códigos QR de imágenes o PDFs.
  • Corrección de imágenes para sesgo, orientación, ruido, baja resolución, contraste, etc.
  • Creación de códigos de barras y su aplicación a imágenes o documentos PDF.
  • Incrustar códigos de barras en documentos HTML.
  • Estilizar códigos de barras y agregar texto de anotación.
  • Escritura de códigos QR que permite agregar logotipos, colores y alineación avanzada de QR.

Resumen

La tabla a continuación compara tanto IronBarcode como QrCoder.

A Comparison Between IronBarcode and QrCoder C# - Figure 12: Comparing the two libraries

Comparación lado a lado de IronBarcode y QrCoder

Conclusión

IronBarcode for .NET permite a los desarrolladores leer y escribir códigos de barras y códigos QR en sus aplicaciones .NET usando solo una línea de código. La biblioteca admite la mayoría de los estándares de códigos de barras y códigos QR, incluidos 39/93/128, UPC A/E, EAN 8/13 y QR, entre otros. La biblioteca preprocesa automáticamente las imágenes de códigos de barras y ofrece corrección para rotación, ruido, distorsión y desviación para mejorar la velocidad y precisión. IronBarcode es compatible con sistemas de 32 y 64 bits, todos los lenguajes .NET, y una variedad de plataformas, incluidas aplicaciones de escritorio, consola, nube, y móviles y web. También permite a los desarrolladores escribir códigos de barras y códigos QR para documentos PDF, JPG, TIFF, GIF, BMP, PNG y HTML, y modificar color de texto, tamaño, rotación y calidad. La biblioteca es segura y no utiliza servicios web ni envía datos a través de internet. IronBarcode está disponible para una prueba gratuita y ofrece tres opciones de licencia, incluida una versión Lite para uso individual, un paquete Professional para equipos de hasta 10 desarrolladores, y un paquete Unlimited para empresas.

QRCoder es una biblioteca .NET de C# que genera códigos QR según el estándar ISO/IEC 18004 sin dependencias de otras bibliotecas. Ofrece varias clases de representación de códigos QR, incluyendo QRCode, ArtQRCode, AsciiQRCode, y otras. Sin embargo, no todos los renderizadores están disponibles en todos los frameworks de destino, y las versiones .NET Standard/.NET >=5.0 tienen algunas restricciones. QRCoder es gratis y no requiere licencias.

IronBarcode es más versátil que QrCoder ya que ofrece soporte para todas las versiones de .NET Framework, tiene una gama más amplia de características, y proporciona cobertura de SaaS y Redistribución OEM. IronBarcode también proporciona documentación integral y soporte 24/7, mientras que QRCoder no. IronBarcode tiene una tarifa de licencia, pero es razonable considerando las características y el soporte que ofrece.

IronBarcode es una biblioteca desarrollada por Iron Software, que también ofrece otras bibliotecas útiles, incluidas IronPDF, IronXL, IronOCR, y IronWebScraper. Compra el Iron Suite completo para obtener los cinco productos a un precio con un descuento notable.

En resumen, IronBarcode es más adecuado para aquellos que necesitan trabajar tanto con códigos de barras como con códigos QR y desean crear un generador de códigos de barras, generador de códigos QR, lector de códigos de barras, y lector de códigos QR. Por otro lado, QRCoder es adecuado para aquellos que solo necesitan crear un generador de código QR.

Por favor notaQrCoder es una marca registrada de su respectivo propietario. Este sitio no está afiliado, ni es respaldado, ni patrocinado por QrCoder. Todos los nombres de producto, logotipos y marcas son propiedad de sus respectivos dueños. Las comparaciones son sólo para fines informativos y reflejan información disponible públicamente al momento de escribir.

Preguntas Frecuentes

¿Cómo puedo generar códigos QR en C#?

Para generar códigos QR en C#, puedes usar la librería QrCoder, que es una librería simple y de código abierto. Como alternativa, puedes usar IronBarcode para funciones más avanzadas, como estilizar códigos QR e integrarlos en documentos.

¿Cuáles son las ventajas de usar IronBarcode sobre QrCoder?

IronBarcode ofrece amplias funcionalidades como la lectura de códigos de barras y códigos QR, corrección de imágenes e incrustación de códigos de barras en PDFs y otros documentos. Es ideal para proyectos que requieren operaciones integrales de códigos de barras y códigos QR.

¿Existe una librería gratuita para generar códigos QR en C#?

Sí, QrCoder es una librería gratuita y de código abierto para generar códigos QR en C#. No requiere una licencia, lo que la convierte en una opción rentable para la generación simple de códigos QR.

¿Puedo leer códigos QR usando QrCoder?

No, QrCoder no soporta la lectura o el escaneo de códigos QR. Para leer códigos QR, puedes usar IronBarcode, que ofrece esta funcionalidad junto con características adicionales.

¿Cómo instalo una librería de código QR en un proyecto .NET?

Puedes instalar QrCoder usando la Consola del Administrador de Paquetes NuGet con el comando Install-Package QRCoder. Para IronBarcode, usa Install-Package IronBarcode.

¿Cuál es la diferencia en el tiempo de ejecución entre IronBarcode y QrCoder para la generación de códigos QR?

QrCoder es más rápido, tardando aproximadamente 592 ms en generar y guardar un código QR, mientras que IronBarcode tarda alrededor de 3503 ms. Sin embargo, IronBarcode ofrece características más avanzadas, además de la generación de códigos QR.

¿IronBarcode requiere una licencia para su implementación?

Sí, IronBarcode requiere una licencia para su implementación fuera del entorno de desarrollo de Visual Studio. Ofrece diferentes opciones de licencia, incluyendo paquetes Lite, Professional e Unlimited.

¿Qué funcionalidades ofrece IronBarcode para el procesamiento de códigos de barras?

IronBarcode permite la lectura y escritura de códigos de barras y códigos QR, corrección de imágenes, opciones de estilizado y la capacidad de incrustar códigos de barras en documentos como PDFs, convirtiéndolo en una herramienta integral para el procesamiento de códigos de barras.

¿Qué librería debo elegir para la generación simple de códigos QR en C#?

Para la generación simple de códigos QR, QrCoder es una opción adecuada debido a su facilidad de uso y licenciamiento gratuito. Sin embargo, para tareas más avanzadas, se recomienda IronBarcode.

¿Puedo integrar códigos QR en PDFs usando C#?

Sí, puedes usar IronBarcode para integrar códigos QR en PDFs. Ofrece funcionalidades para leer y escribir códigos QR y códigos de barras e incrustarlos en documentos sin problemas.

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 para pruebas de productos, desarrollo de productos e investigación, Jordi agrega un valor inmenso a la mejora continua del producto. La experiencia variada lo mantiene ...
Leer más