C# Generador de códigos QR para .NET

This article was translated from English: Does it need improvement?
Translated
View the article in English

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#

Comience a usar IronBarcode en su proyecto hoy con una prueba gratuita.

Primer Paso:
green arrow pointer

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;

// Generate a Simple BarCode image and save as PDF
QRCodeWriter.CreateQrCode("hello world", 500, QRCodeWriter.QrErrorCorrectionLevel.Medium).SaveAsPng("MyQR.png");
Imports IronBarCode

' Generate a Simple BarCode image and save as 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;

// You may add styling with color, logo images or branding:
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);

// Logo will automatically be sized appropriately and snapped to the QR grid.
myQRCodeWithLogo.SaveAsPng("myQRWithLogo.png");
Imports IronBarCode
Imports IronSoftware.Drawing

' You may add styling with color, logo images or branding:
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)

' Logo will automatically be sized appropriately and snapped to the QR grid.
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;

// You may add styling with color, logo images or branding:
QRCodeLogo qrCodeLogo = new QRCodeLogo("visual-studio-logo.png");
GeneratedBarcode myQRCodeWithLogo = QRCodeWriter.CreateQrCodeWithLogo("https://ironsoftware.com/", qrCodeLogo);

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

// Save as PDF
myQRCodeWithLogo.SaveAsPdf("MyQRWithLogo.pdf");

// Also Save as HTML
myQRCodeWithLogo.SaveAsHtmlFile("MyQRWithLogo.html");
Imports IronBarCode

' You may add styling with color, logo images or branding:
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)

' Save as PDF
myQRCodeWithLogo.SaveAsPdf("MyQRWithLogo.pdf")

' Also Save as 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;

// Verifying QR Codes
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");

// open the barcode html file in your default web browser
System.Diagnostics.Process.Start("MyVerifiedQR.html");
Imports Microsoft.VisualBasic
Imports IronBarCode
Imports IronSoftware.Drawing
Imports System

' Verifying QR Codes
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")

' open the barcode html file in your default web browser
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;

// Create Some Binary Data - This example equally well for Byte[] and System.IO.Stream
byte[] BinaryData = System.Text.Encoding.UTF8.GetBytes("https://ironsoftware.com/csharp/barcode/");

// WRITE QR with Binary Content
QRCodeWriter.CreateQrCode(BinaryData, 500).SaveAsImage("MyBinaryQR.png");

// READ QR with Binary Content
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

' Create Some Binary Data - This example equally well for Byte[] and System.IO.Stream
Private BinaryData() As Byte = System.Text.Encoding.UTF8.GetBytes("https://ironsoftware.com/csharp/barcode/")

' WRITE QR with Binary Content
QRCodeWriter.CreateQrCode(BinaryData, 500).SaveAsImage("MyBinaryQR.png")

' READ QR with Binary Content
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 resumenLibrerí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 conCó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.

*Repositorio Github

*Código fuente Zip

Documentación adicional

También puede encontrar elQRCodeWriter yLector de códigos de barras dentro de la Referencia API de interés.

Documentan el conjunto completo de funciones de IronBarcode, unGenerador 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.