C# Generador de códigos QR para .NET
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.
Cómo leer y generar código QR en C#
- Descargar QR code Generator Library
- Crear un código QR añadiendo una línea de código
- Añada su logotipo a un código QR
- Compruebe que su código QR es legible
- Lectura y escritura de QR con datos binarios
Instalar biblioteca generadora de códigos QR en C#
Instalar con NuGet
Install-Package BarCode
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
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")
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](/img/tutorials/creating-qr-barcodes-in-dot-net/csharp-rendered-qrcode.png)
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")
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](/img/tutorials/creating-qr-barcodes-in-dot-net/qr-code-with-logo.png)
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")
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")
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](/img/tutorials/creating-qr-barcodes-in-dot-net/verified-qr-code.png)
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
![C# leer y escribir datos binarios como un código QR](/img/tutorials/creating-qr-barcodes-in-dot-net/binary-data-as-qr-code.png)
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
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
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.