Gerar e reconhecer códigos de barras DotCode em .NET

Categoria do blog: Código de barras.NET

13.08.2020

O DotCode é uma simbologia de código de pontos bidimensional projetada para ser lida de forma confiável quando impressa por tecnologias de jato de tinta ou laser de alta velocidade.

Exemplos de códigos de barras DotCode:
Samples of DotCode barcodes

Um código de pontos, genericamente, é um tipo de código de barras que codifica dados em uma matriz de pontos nominalmente desconectados em locais escolhidos dentro de uma grade regular de possíveis localizações. O DotCode é um código de pontos cuja matriz tem formato retangular, com altura "H" (linhas) e largura "W" (colunas). Exatamente metade das possíveis localizações de pontos são disponibilizadas para impressão, como os quadrados escuros em um tabuleiro de xadrez.
A matriz do código de barras DotCode não possui padrões fixos ou de busca. Zonas de silêncio com pelo menos 3Y de altura ou 3X de largura circundam a matriz de pontos de dados (veja a imagem abaixo).

Estrutura do código de barras DotCode:
Structure of DotCode barcode


Características gerais do DotCode:



VintaSoft Barcode .NET SDK suporta leitura e gravação de códigos de barras DotCode.

Aqui está um código C# que mostra como gerar um código de barras DotCode como imagem raster:
/// <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");
    }
}


Aqui está um código C# que mostra como gerar um código de barras DotCode em formato vetorial:
/// <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();
}


Aqui está o código C# que mostra como gerar um código de barras DotCode como uma imagem 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();
}

Aqui está o código C# que mostra como reconhecer um código de barras DotCode em uma imagem:
/// <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();
            }
        }
    }
}