Reconocer y generar códigos de barras Data Matrix utilizando VintaSoft Barcode .NET SDK.

Categoría del blog: Barcode.NET

19.08.2025

VintaSoft Barcode .NET SDK es un SDK profesional multiplataforma para Windows, Linux, macOS y Android, que permite reconocer y generar códigos de barras Data Matrix en .NET, WPF, Web y MAUI. VintaSoft Barcode .NET SDK permite integrar la funcionalidad de reconocimiento y generación de códigos de barras Data Matrix con solo unas pocas líneas de código.


¿Qué es un código de barras Data Matrix?

Data Matrix es un código de barras matricial bidimensional que se ha generalizado en la industria, la producción y el etiquetado de productos. Una característica distintiva del código de barras Data Matrix es el patrón de búsqueda "L" en forma de línea sólida a ambos lados del código:



Características del código de barras Data Matrix

La versión moderna del código de barras Data Matrix, ECC200, está definida por la norma ISO/IEC 16022 de 2006. La norma también describe las versiones anteriores, de ECC000 a ECC140, cuyo uso no se recomienda.

El código de barras Data Matrix puede almacenar datos mixtos de diferentes tipos en tres modos de codificación:

El código de barras Data Matrix utiliza el algoritmo de corrección de errores Reed-Solomon, que permite reconocer códigos de barras dañados.

La compatibilidad con el estándar GS1 le permite codificar datos en formato GS1 (BarcodeSymbologySubsets.GS1DataMatrix).

El código de barras Data Matrix puede codificar los siguientes símbolos especiales:


Código de barras Data Matrix rectangular: cuando el área de marcado no es cuadrada

Existen 6 versiones especiales del código de barras Data Matrix rectangular:


Estos códigos de barras se utilizan en artículos pequeños cuando el área disponible no permite un código de barras cuadrado.


Estructura del código de barras Data Matrix

La versión ECC200 del código de barras Data Matrix cuenta con 24 versiones cuadradas con tamaños que van desde 10x10 hasta 144x144 módulos, así como versiones rectangulares: 8x18, 8x32, 12x26, 12x36, 16x36 y 16x48 módulos. La orientación del código de barras se determina mediante el patrón de búsqueda "L", cuyo centro se encuentra en la esquina inferior izquierda del código de barras.



Es fácil distinguir la versión moderna de Data Matrix ECC200 de la versión obsoleta ECC000-ECC140: en la versión ECC200, el tamaño de la matriz siempre es par, y en la ECC000-140, siempre es impar; por lo tanto, en la versión ECC200 siempre hay un módulo blanco en la esquina superior derecha, y en la versión obsoleta siempre hay un módulo negro.


Si necesita codificar una gran cantidad de datos, un símbolo especial "Structure Append"

El código de barras Data Matrix admite un símbolo especial "Structure Append", que permite dividir los datos en varios códigos de barras Data Matrix. El símbolo "Structure Append" está codificado en el código de barras y permite determinar con precisión el número de partes del código de barras y su orden:

VintaSoft Barcode .NET SDK contiene un algoritmo para recuperar datos de un conjunto de partes de códigos de barras de Data Matrix que se separaron mediante el símbolo "Structure Append".


¿Qué códigos de barras de Data Matrix reconoce VintaSoft Barcode .NET SDK?

VintaSoft Barcode .NET SDK reconoce todos los tipos de códigos de barras de Data Matrix versión ECC200. Durante el reconocimiento, se utilizan algoritmos únicos que permiten reconocer rápidamente códigos de barras con diversos problemas:



Aquí se muestra un código en C# que demuestra cómo reconocer códigos de barras Data Matrix en una imagen capturada con una cámara:
/// <summary>
/// Reads Data Matrix barcodes from a <see cref="System.Drawing.Bitmap"/>.
/// </summary>
/// <param name="bitmap">A bitmap with barcodes.</param>
public static void ReadDataMatrixBarcodesFromBitmap(System.Drawing.Bitmap bitmap)
{
    // create barcode reader
    using (Vintasoft.Barcode.BarcodeReader reader = new Vintasoft.Barcode.BarcodeReader())
    {
        // specify that reader must search for Data Matrix barcodes
        reader.Settings.ScanBarcodeTypes = Vintasoft.Barcode.BarcodeType.DataMatrix;

        // 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 Data Matrix puede generar VintaSoft Barcode .NET SDK?

VintaSoft Barcode .NET SDK genera todos los tipos de códigos de barras Data Matrix.

Aquí se muestra el código en C# que demuestra cómo generar un mapa de bits de código de barras Data Matrix:
/// <summary>
/// Returns the Data Matrix 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 GetDataMatrixBarcodeAsBitmap(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.DataMatrix;
        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) de un código de barras Data Matrix:
/// <summary>
/// Returns the Data Matrix barcode in vector form as a SVG string.
/// </summary>
/// <param name="barcodeValue">Barcode value.</param>
public static void GetDataMatrixBarcodeAsSvgString(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.DataMatrix;
        barcodeWriter.Settings.Value = barcodeValue;

        // generate Data Matrix barcode as a SVG string
        return barcodeWriter.GetBarcodeAsSvgFile();
    }
}