VintaSoft Barcode .NET SDK es el SDK multiplataforma profesional para Windows, Linux, macOS y Android, que permite reconocer y generar códigos de barras QR en .NET, WPF, Web, MAUI. Solo necesitas unas pocas líneas de código para agregar la capacidad de reconocer y generar códigos de barras QR a tu aplicación .NET.
¿Qué es un código de barras QR?
El código QR es un código de barras matricial bidimensional, que es el código de barras bidimensional más utilizado en el mundo. El nombre de este código de barras refleja la idea de su desarrollo: "Respuesta Rápida", reconocimiento rápido con cualquier ángulo de inclinación. Una característica distintiva del código QR son sus patrones de búsqueda claramente distinguibles: cuadrados negros en las esquinas:
Características del código QR
Todos los fabricantes modernos utilizan códigos QR, descritos en la norma ISO/IEC 18004. La norma AIM ITS/97-001 describe el Código QR Modelo 1, una versión obsoleta del código de barras, cuyo uso no se recomienda.
El código de barras QR puede almacenar datos mixtos de varios tipos en cuatro modos de codificación:
- Alfanumérico (hasta 4296 símbolos)
- Byte (hasta 2953 bytes)
- Numérico (hasta 7089 dígitos)
- Kanji (hasta 1817 símbolos)
El código de barras QR utiliza el algoritmo de corrección de errores Reed-Solomon, que permite el reconocimiento de códigos de barras dañados. Al crear un código de barras, se selecciona uno de los 4 niveles de corrección de errores según las condiciones de uso esperadas: cuanto mayor sea el nivel de corrección de errores, menos datos se pueden colocar en el código de barras.
Código de barras Micro QR
El código de barras Micro QR es una versión compacta del código de barras QR. El código de barras Micro QR se utiliza habitualmente para marcar paquetes pequeños:
El código de barras Micro QR solo tiene un patrón de búsqueda. La cantidad de datos en este código de barras es muy limitada:
- Alfanumérico (hasta 21 símbolos)
- Byte (hasta 15 bytes)
- Numérico (hasta 35 dígitos)
- Kanji (hasta 9 símbolos)
Estructura de la matriz del código de barras
Las matrices de códigos de barras QR y Micro QR tienen la siguiente estructura:
- Zona silenciosa
- Patrones de búsqueda
- Información sobre el formato
- Patrones de tiempo
- Patrones de alineación
- Capa de corrección de datos y errores
Símbolo especial "Anexo de estructura"
El código QR admite un símbolo especial llamado "Anexo de estructura", que permite dividir los datos en varios códigos QR. El símbolo está codificado en el código y permite determinar claramente el número de partes del código y su orden. Esta función se puede utilizar para marcar un área alargada o para colocar una gran cantidad de datos.
El VintaSoft Barcode .NET SDK permite dividir los datos y generar varios códigos QR vinculados mediante el símbolo "Anexo de estructura". El SDK también incluye un algoritmo para restaurar datos de un conjunto de códigos de barras QR divididos mediante el símbolo "Anexar estructura".
¿Qué códigos de barras QR reconoce VintaSoft Barcode .NET SDK?
VintaSoft Barcode .NET SDK reconoce todos los tipos de códigos de barras QR y Micro QR. Se utilizan algoritmos únicos para el reconocimiento, lo que permite reconocer rápidamente códigos de barras que tienen varios problemas:
- matriz dañada
- contraste bajo
- modulación baja
- iluminación desigual
- compresión en un lado
- distorsiones espaciales
- código de barras impreso en una superficie distorsionada
- gran cantidad de códigos de barras en una imagen
Aquí hay un código C# que demuestra cómo reconocer códigos de barras QR Code en una imagen capturada desde una cámara:
/// <summary>
/// Reads QR Code barcodes from a <see cref="System.Drawing.Bitmap"/>.
/// </summary>
/// <param name="bitmap">A bitmap with barcodes.</param>
public static void ReadQRCodeBarcodesFromBitmap(System.Drawing.Bitmap bitmap)
{
// create barcode reader
using (Vintasoft.Barcode.BarcodeReader reader = new Vintasoft.Barcode.BarcodeReader())
{
// specify that reader must search for QR Code barcodes
reader.Settings.ScanBarcodeTypes = Vintasoft.Barcode.BarcodeType.QR;
// read barcodes from image
Vintasoft.Barcode.IBarcodeInfo[] infos = Vintasoft.Barcode.GdiExtensions.ReadBarcodes(reader, bitmap);
// if barcodes are not detected
if (infos.Length == 0)
{
System.Console.WriteLine("No barcodes found.");
}
// if barcodes are detected
else
{
// get information about extracted barcodes
System.Console.WriteLine(string.Format("{0} barcodes found:", infos.Length));
System.Console.WriteLine();
for (int i = 0; i < infos.Length; i++)
{
Vintasoft.Barcode.IBarcodeInfo info = infos[i];
System.Console.WriteLine(string.Format("[{0}:{1}]", i + 1, info.BarcodeType));
System.Console.WriteLine(string.Format("Value: {0}", info.Value));
System.Console.WriteLine(string.Format("Region: {0}", info.Region));
System.Console.WriteLine();
}
}
}
}
¿Qué códigos de barras QR Code puede generar VintaSoft Barcode .NET SDK?
VintaSoft Barcode .NET SDK genera todo tipo de códigos de barras QR y Micro QR.
Aquí hay un código C# que demuestra cómo generar una imagen rasterizada del código de barras QR:
/// <summary>
/// Returns the QR Code barcode as <see cref="System.Drawing.Bitmap"/>.
/// </summary>
/// <param name="value">The barcode value.</param>
/// <returns>A <see cref="System.Drawing.Bitmap"/> object.</returns>
public static System.Drawing.Bitmap GetQRCodeBarcodeAsBitmap(string value)
{
// create the barcode writer
using (Vintasoft.Barcode.BarcodeWriter barcodeWriter = new Vintasoft.Barcode.BarcodeWriter())
{
// set barcode writer settings
barcodeWriter.Settings.Barcode = Vintasoft.Barcode.BarcodeType.QR;
barcodeWriter.Settings.Value = value;
// get a barcode image as System.Drawing.Bitmap
return Vintasoft.Barcode.GdiExtensions.GetBarcodeAsBitmap(barcodeWriter);
}
}
Aquí hay un código C# que demuestra cómo generar una imagen rasterizada del código de barras Micro QR:
/// <summary>
/// Returns the Micro QR barcode as <see cref="System.Drawing.Bitmap"/>.
/// </summary>
/// <param name="value">The barcode value.</param>
/// <returns>A <see cref="System.Drawing.Bitmap"/> object.</returns>
public static System.Drawing.Bitmap GetMicroQRBarcodeAsBitmap(string value)
{
// create the barcode writer
using (Vintasoft.Barcode.BarcodeWriter barcodeWriter = new Vintasoft.Barcode.BarcodeWriter())
{
// set barcode writer settings
barcodeWriter.Settings.Barcode = Vintasoft.Barcode.BarcodeType.MicroQR;
barcodeWriter.Settings.Value = value;
// get a barcode image as System.Drawing.Bitmap
return Vintasoft.Barcode.GdiExtensions.GetBarcodeAsBitmap(barcodeWriter);
}
}
Aquí hay un código C# que demuestra cómo generar una imagen vectorial (SVG) del código de barras QR:
/// <summary>
/// Returns the QR Code barcode in vector form as a SVG string.
/// </summary>
/// <param name="barcodeValue">Barcode value.</param>
public static void GetQrCodeBarcodeAsSvgString(string barcodeValue)
{
// create the barcode writer
using (Vintasoft.Barcode.BarcodeWriter barcodeWriter = new Vintasoft.Barcode.BarcodeWriter())
{
// set barcode writer settings
barcodeWriter.Settings.Barcode = Vintasoft.Barcode.BarcodeType.QR;
barcodeWriter.Settings.Value = barcodeValue;
// generate QR Code barcode as a SVG string
return barcodeWriter.GetBarcodeAsSvgFile();
}
}