Generar y reconocer códigos de barras DotCode en .NET

Categoría del blog: Barcode.NET

13.08.2020

DotCode es una simbología de código de puntos bidimensional diseñada para leerse de manera confiable cuando se imprime con tecnologías de puntos láser o de inyección de tinta de alta velocidad.

Muestras de códigos de barras DotCode:
Muestras de códigos de barras DotCode

Un código de puntos, genéricamente, es un tipo de código de barras que codifica datos en una matriz de puntos nominalmente desconectados en sitios elegidos dentro de una cuadrícula regular de posibles ubicaciones. DotCode es un código de puntos cuya matriz es rectangular, con una altura "H" (filas) y un ancho "W" (columnas). Exactamente la mitad de las posibles ubicaciones de puntos están disponibles para impresión, como los cuadrados oscuros de un tablero de ajedrez.
La matriz de código de barras DotCode no tiene patrones fijos ni de búsqueda. Zonas silenciosas de al menos 3Y de alto o 3X de ancho rodean la matriz de ubicaciones de puntos de datos (ver imagen a continuación).

Estructura del código de barras DotCode:
Estructura del código de barras DotCode


Características generales de DotCode:



VintaSoft Barcode .NET SDK admite la lectura y escritura de códigos de barras DotCode.

Aquí hay un código C# que muestra cómo generar un código de barras DotCode como imagen rasterizada:
/// <summary>
/// Generates DotCode barcode as raster image.
/// </summary>
public void GenerateDotCodeBarcodeAsRasterImage()
{
    // create the barcode writer
    Vintasoft.Barcode.BarcodeWriter barcodeWriter = new Vintasoft.Barcode.BarcodeWriter();

    // set barcode writer settings
    barcodeWriter.Settings.Barcode = Vintasoft.Barcode.BarcodeType.DotCode;
    barcodeWriter.Settings.Value = "abc012345def";

    // get a barcode image
    using (System.Drawing.Image image = barcodeWriter.GetBarcodeAsBitmap())
    {
        // save the barcode image to a file
        image.Save("DotCodeBarcode.png");
    }
}


Aquí hay un código C# que muestra cómo generar un código de barras DotCode en formato vectorial:
/// <summary>
/// Generates DotCode barcode as graphics path.
/// </summary>
public System.Drawing.Drawing2D.GraphicsPath GenerateDotCodeBarcodeAsGraphicsPath()
{
    // create the barcode writer
    Vintasoft.Barcode.BarcodeWriter barcodeWriter = new Vintasoft.Barcode.BarcodeWriter();

    // set barcode writer settings
    barcodeWriter.Settings.Barcode = Vintasoft.Barcode.BarcodeType.DotCode;
    barcodeWriter.Settings.Value = "012345abcde";

    // return barcode as graphics path
    return barcodeWriter.GetBarcodeAsGraphicsPath();
}


Aquí hay un código C# que muestra cómo generar un código de barras DotCode como imagen SVG:
/// <summary>
/// Generates DotCode barcode as SVG image.
/// </summary>
public string GenerateDotCodeBarcodeAsSvgImage()
{
    // create the barcode writer
    Vintasoft.Barcode.BarcodeWriter barcodeWriter = new Vintasoft.Barcode.BarcodeWriter();

    // set barcode writer settings
    barcodeWriter.Settings.Barcode = Vintasoft.Barcode.BarcodeType.DotCode;
    barcodeWriter.Settings.Value = "012345abcde";

    // return barcode as SVG image
    return barcodeWriter.GetBarcodeAsSvgFile();
}

Aquí hay un código C# que muestra cómo reconocer un código de barras DotCode en una imagen:
/// <summary>
/// Recognizes DotCode barcode in image.
/// </summary>
public void RecognizeDotCodeBarcode()
{
    // create barcode reader
    using (Vintasoft.Barcode.BarcodeReader reader = new Vintasoft.Barcode.BarcodeReader())
    {
        // specify that reader must search for DotCode barcodes
        reader.Settings.ScanBarcodeTypes = Vintasoft.Barcode.BarcodeType.DotCode;

        // ScanInterval must be lower than dot size of DotCode barcode, in pixels
        reader.Settings.ScanInterval = 3;

        // read barcodes from image file
        Vintasoft.Barcode.IBarcodeInfo[] barcodeInfos = reader.ReadBarcodes("DotCodeCodeBarcode.png");

        // if barcodes are not detected
        if (barcodeInfos.Length == 0)
        {
            Console.WriteLine("Barcodes are not found.");
        }
        // if barcodes are detected
        else
        {
            // get information about recognized barcodes

            Console.WriteLine(string.Format("{0} barcode(s) found:", barcodeInfos.Length));
            Console.WriteLine();
            for (int i = 0; i &lt; barcodeInfos.Length; i++)
            {
                Vintasoft.Barcode.IBarcodeInfo barcodeInfo = barcodeInfos[i];
                Console.WriteLine(string.Format("[{0}:{1}]", i + 1, barcodeInfo.BarcodeType));
                Console.WriteLine(string.Format("Value:      {0}", barcodeInfo.Value));
                Console.WriteLine(string.Format("Region:     {0}", barcodeInfo.Region));
                Console.WriteLine();
            }
        }
    }
}