C# Generador de códigos QR para .NET

por Jennifer Wright

Como habrá podido leer en el tutorial introductorio Crear un código de barras, crear, estilizar y exportar códigos de barras como imágenes con IronBarcode es increíblemente sencillo y a menudo puede conseguirse con una sola línea de código.

En este ejemplo, profundizaremos en los códigos QR, cada vez más populares en las aplicaciones industriales y también en el comercio minorista.

Instalar biblioteca generadora de códigos QR en C#

Biblioteca NuGet C# para

Instalar con NuGet

Install-Package BarCode
o
Java PDF JAR

Descargar DLL

Descargar DLL

Instalar manualmente en su proyecto

Antes de empezar tenemos que instalar el Código de barras Paquete NuGet.

Install-Package BarCode

https://www.nuget.org/packages/BarCode/ Como alternativa, el IronBarCode.Dll se puede descargar y añadido a su proyecto como una referencia de [DLL de código de barras .NET].

Importación de NameSpaces

Para este tutorial necesitamos asegurarnos de que nuestros archivos de clase hacen referencia a IronBarCode y también a algunos ensamblados normales del sistema.

using IronBarCode;
using System;
using System.Drawing;
using System.Linq;
using IronBarCode;
using System;
using System.Drawing;
using System.Linq;
Imports IronBarCode
Imports System
Imports System.Drawing
Imports System.Linq
VB   C#


Crear un código QR con 1 línea de código

Nuestro primer ejemplo nos muestra cómo crear un código de barras normalizado con un texto sencillo, un diámetro cuadrado de 500 píxeles y una corrección de errores media.

:path=/static-assets/barcode/content-code-examples/tutorials/csharp-qr-code-generator-1.cs
using IronBarCode;

//  Generar una imagen de código de barras simple y guardarla como PDF
QRCodeWriter.CreateQrCode("hello world", 500, QRCodeWriter.QrErrorCorrectionLevel.Medium).SaveAsPng("MyQR.png");
Imports IronBarCode

'  Generar una imagen de código de barras simple y guardarla como PDF
QRCodeWriter.CreateQrCode("hello world", 500, QRCodeWriter.QrErrorCorrectionLevel.Medium).SaveAsPng("MyQR.png")
VB   C#

La corrección de errores nos permite definir lo fácil que será leer un código QR en circunstancias reales. Los niveles más altos de corrección de errores crean códigos QR más grandes, con más píxeles y más complejos.

C# Crear Imagen de Código QR

Añadir un logotipo

En el segundo ejemplo, veremos un caso de uso en el que una empresa desea añadir un logotipo a su código QR, algo que vemos con frecuencia hoy en día. Usando el método QRCodeWriter.CreateQRCodeWithLogo, en el ejemplo de código de abajo puedes ver lo fácil que es.

:path=/static-assets/barcode/content-code-examples/tutorials/csharp-qr-code-generator-2.cs
using IronBarCode;
using IronSoftware.Drawing;

//  Puede añadir estilo con colores, imágenes de logotipos o marcas:
QRCodeLogo qrCodeLogo = new QRCodeLogo("visual-studio-logo.png");
GeneratedBarcode myQRCodeWithLogo = QRCodeWriter.CreateQrCodeWithLogo("https://ironsoftware.com/", qrCodeLogo);
myQRCodeWithLogo.ResizeTo(500, 500).SetMargins(10).ChangeBarCodeColor(Color.DarkGreen);

//  El logotipo tendrá automáticamente el tamaño adecuado y se ajustará a la cuadrícula del QR.
myQRCodeWithLogo.SaveAsPng("myQRWithLogo.png");
Imports IronBarCode
Imports IronSoftware.Drawing

'  Puede añadir estilo con colores, imágenes de logotipos o marcas:
Private qrCodeLogo As New QRCodeLogo("visual-studio-logo.png")
Private myQRCodeWithLogo As GeneratedBarcode = QRCodeWriter.CreateQrCodeWithLogo("https://ironsoftware.com/", qrCodeLogo)
myQRCodeWithLogo.ResizeTo(500, 500).SetMargins(10).ChangeBarCodeColor(Color.DarkGreen)

'  El logotipo tendrá automáticamente el tamaño adecuado y se ajustará a la cuadrícula del QR.
myQRCodeWithLogo.SaveAsPng("myQRWithLogo.png")
VB   C#

Este ejemplo añade el logotipo de Visual Studio al código de barras. Lo ajusta automáticamente a un tamaño adecuado en el que el código puro siga siendo legible y alinea ese logotipo con la cuadrícula del código QR, para que tenga el aspecto adecuado. La siguiente línea de código colorea el código de barras de verde oscuro. Sin embargo, no decolora el logotipo.

C# Create QR Code With Logo Image

Guardar como imagen PDF o HTML

Por último, guardamos ese QR como PDF. La última línea de código abre el PDF en su navegador PDF predeterminado para su comodidad.

:path=/static-assets/barcode/content-code-examples/tutorials/csharp-qr-code-generator-3.cs
using IronBarCode;

//  Puede añadir estilo con colores, imágenes de logotipos o marcas:
QRCodeLogo qrCodeLogo = new QRCodeLogo("visual-studio-logo.png");
GeneratedBarcode myQRCodeWithLogo = QRCodeWriter.CreateQrCodeWithLogo("https://ironsoftware.com/", qrCodeLogo);

myQRCodeWithLogo.ChangeBarCodeColor(System.Drawing.Color.DarkGreen);

//  Guardar como PDF
myQRCodeWithLogo.SaveAsPdf("MyQRWithLogo.pdf");

//  Guardar también como HTML
myQRCodeWithLogo.SaveAsHtmlFile("MyQRWithLogo.html");
Imports IronBarCode

'  Puede añadir estilo con colores, imágenes de logotipos o marcas:
Private qrCodeLogo As New QRCodeLogo("visual-studio-logo.png")
Private myQRCodeWithLogo As GeneratedBarcode = QRCodeWriter.CreateQrCodeWithLogo("https://ironsoftware.com/", qrCodeLogo)

myQRCodeWithLogo.ChangeBarCodeColor(System.Drawing.Color.DarkGreen)

'  Guardar como PDF
myQRCodeWithLogo.SaveAsPdf("MyQRWithLogo.pdf")

'  Guardar también como HTML
myQRCodeWithLogo.SaveAsHtmlFile("MyQRWithLogo.html")
VB   C#

Verificación de códigos QR

Al añadir logotipos a los códigos QR y cambiar los colores, queremos asegurarnos de que nuestro QR sigue siendo legible.

Utilizando la función `GeneratedBarcode.Verify()podemos comprobar si nuestro código de barras sigue siendo legible.

En el siguiente ejemplo de código, veremos que cambiar un código QR a azul claro en realidad lo hace ilegible. Lo detectamos en el código y preferimos el azul oscuro.

:path=/static-assets/barcode/content-code-examples/tutorials/csharp-qr-code-generator-4.cs
using IronBarCode;
using IronSoftware.Drawing;
using System;

//  Verificación de códigos QR
QRCodeLogo qrCodeLogo = new QRCodeLogo("visual-studio-logo.png");
GeneratedBarcode MyVerifiedQR = QRCodeWriter.CreateQrCodeWithLogo("https://ironsoftware.com/", qrCodeLogo);

MyVerifiedQR.ChangeBarCodeColor(System.Drawing.Color.LightBlue);

if (!MyVerifiedQR.Verify())
{
    Console.WriteLine("\t LightBlue is not dark enough to be read accurately.  Lets try DarkBlue");
    MyVerifiedQR.ChangeBarCodeColor(Color.DarkBlue);
}
MyVerifiedQR.SaveAsHtmlFile("MyVerifiedQR.html");

//  abra el archivo html del código de barras en su navegador web predeterminado
System.Diagnostics.Process.Start("MyVerifiedQR.html");
Imports Microsoft.VisualBasic
Imports IronBarCode
Imports IronSoftware.Drawing
Imports System

'  Verificación de códigos QR
Private qrCodeLogo As New QRCodeLogo("visual-studio-logo.png")
Private MyVerifiedQR As GeneratedBarcode = QRCodeWriter.CreateQrCodeWithLogo("https://ironsoftware.com/", qrCodeLogo)

MyVerifiedQR.ChangeBarCodeColor(System.Drawing.Color.LightBlue)

If Not MyVerifiedQR.Verify() Then
	Console.WriteLine(vbTab & " LightBlue is not dark enough to be read accurately.  Lets try DarkBlue")
	MyVerifiedQR.ChangeBarCodeColor(Color.DarkBlue)
End If
MyVerifiedQR.SaveAsHtmlFile("MyVerifiedQR.html")

'  abra el archivo html del código de barras en su navegador web predeterminado
System.Diagnostics.Process.Start("MyVerifiedQR.html")
VB   C#

Las últimas líneas de código exportan el código QR como un archivo HTML independiente sin activos y, a continuación, abre ese archivo HTML en tu navegador predeterminado.

C# leer y escribir QR

Lectura y escritura de datos binarios

Los códigos QR son un formato excelente para tratar datos binarios. A veces, los datos binarios ocupan menos espacio o son más apropiados que los textos.

En este ejemplo, codificaremos algunos datos binarios de una cadena, los escribiremos en un código de barras en formato QR y luego los leeremos como una matriz de bits de datos binarios. Observará que esta característica no es común a muchas bibliotecas de códigos de barras, lo que hace que IronBarcode sea única en este sentido.

:path=/static-assets/barcode/content-code-examples/tutorials/csharp-qr-code-generator-5.cs
using IronBarCode;
using System;
using System.Linq;

//  Crear algunos datos binarios - Este ejemplo sirve tanto para Byte[] como para System.IO.Stream
byte[] BinaryData = System.Text.Encoding.UTF8.GetBytes("https://ironsoftware.com/csharp/barcode/");

//  WRITE QR con contenido binario
QRCodeWriter.CreateQrCode(BinaryData, 500).SaveAsImage("MyBinaryQR.png");

//  LEER QR con contenido binario
var MyReturnedData = BarcodeReader.Read("MyBinaryQR.png").First();
if (BinaryData.SequenceEqual(MyReturnedData.BinaryValue))
{
    Console.WriteLine("\t Binary Data Read and Written Perfectly");
}
else
{
    throw new Exception("Corrupted Data");
}
Imports Microsoft.VisualBasic
Imports IronBarCode
Imports System
Imports System.Linq

'  Crear algunos datos binarios - Este ejemplo sirve tanto para Byte[] como para System.IO.Stream
Private BinaryData() As Byte = System.Text.Encoding.UTF8.GetBytes("https://ironsoftware.com/csharp/barcode/")

'  WRITE QR con contenido binario
QRCodeWriter.CreateQrCode(BinaryData, 500).SaveAsImage("MyBinaryQR.png")

'  LEER QR con contenido binario
Dim MyReturnedData = BarcodeReader.Read("MyBinaryQR.png").First()
If BinaryData.SequenceEqual(MyReturnedData.BinaryValue) Then
	Console.WriteLine(vbTab & " Binary Data Read and Written Perfectly")
Else
	Throw New Exception("Corrupted Data")
End If
VB   C#
C# leer y escribir datos binarios como un código QR

En resumen Librería C# de código de barras se ha diseñado específicamente teniendo en cuenta el uso de los códigos QR en el mundo real. No sólo lee códigos QR con rapidez y precisión, sino que nos permite darles estilo, añadir logotipos, verificar códigos de barras y codificarlos con datos binarios.

Lectura de códigos QR

Para ahorrarte saltos entre tutoriales añadiré un ejemplo de código para mi forma favorita de leer códigos QR usando IronBarcode.

:path=/static-assets/barcode/content-code-examples/tutorials/csharp-qr-code-generator-6.cs
using IronBarCode;
using System;
using System.Linq;

BarcodeResults result = BarcodeReader.Read("QR.png", new BarcodeReaderOptions() { ExpectBarcodeTypes = BarcodeEncoding.QRCode });
if (result != null)
{
    Console.WriteLine(result.First().Value);
}
Imports IronBarCode
Imports System
Imports System.Linq

Private result As BarcodeResults = BarcodeReader.Read("QR.png", New BarcodeReaderOptions() With {.ExpectBarcodeTypes = BarcodeEncoding.QRCode})
If result IsNot Nothing Then
	Console.WriteLine(result.First().Value)
End If
VB   C#

También existe una forma más avanzada con más control por parte del desarrollador:

:path=/static-assets/barcode/content-code-examples/tutorials/csharp-qr-code-generator-7.cs
using IronBarCode;
using System;
using System.Linq;

BarcodeReaderOptions options = new BarcodeReaderOptions
{
    Speed = ReadingSpeed.Faster,
    ExpectMultipleBarcodes = false,
    ExpectBarcodeTypes = BarcodeEncoding.All,
    Multithreaded = false,
    MaxParallelThreads = 0,
    CropArea = null,
    UseCode39ExtendedMode = false,
    RemoveFalsePositive = false,
    ImageFilters = null
};

BarcodeResults result = BarcodeReader.Read("QR.png", options);
if (result != null)
{
    Console.WriteLine(result.First().Value);
}
Imports IronBarCode
Imports System
Imports System.Linq

Private options As New BarcodeReaderOptions With {
	.Speed = ReadingSpeed.Faster,
	.ExpectMultipleBarcodes = False,
	.ExpectBarcodeTypes = BarcodeEncoding.All,
	.Multithreaded = False,
	.MaxParallelThreads = 0,
	.CropArea = Nothing,
	.UseCode39ExtendedMode = False,
	.RemoveFalsePositive = False,
	.ImageFilters = Nothing
}

Private result As BarcodeResults = BarcodeReader.Read("QR.png", options)
If result IsNot Nothing Then
	Console.WriteLine(result.First().Value)
End If
VB   C#

Avanzar

Para obtener más información sobre este ejemplo y el trabajo con Códigos QR en C#le animamos a que lo bifurque en nuestra página de GitHub o descargue el código fuente de nuestro sitio.

Descargas de código fuente

Descargue este C# Tutorial y DLL del Generador de Códigos QR.

Documentación adicional

También puede encontrar el QRCodeWriter y Lector de códigos de barras dentro de la Referencia API de interés.

Documentan el conjunto completo de funciones de IronBarcode, un Generador de códigos de barras VB.NETque no se pueden condensar en un solo tutorial.

La biblioteca de códigos de barras .NET puede revolucionar la forma de conectar los catálogos de productos en línea y fuera de línea mediante la producción de un identificador único tanto para un producto como para su código físico específico de producción por lotes.

Jennifer Wright

Jefe de Arquitectura de Aplicaciones

Jenny dirige la arquitectura de productos de software en el departamento de desarrollo de productos digitales de un gigante farmacéutico. El equipo de Jenny utiliza IronBarcode para conectar catálogos de productos online y offline.