DotCode-Barcodes in .NET generieren und erkennen

Blog-Kategorie: Barcode.NET

13.08.2020

DotCode ist eine zweidimensionale Punktcode-Symbologie, die für das zuverlässige Lesen beim Drucken mit Hochgeschwindigkeits-Tintenstrahl- oder Laserdrucktechnologien entwickelt wurde.

Beispiele für DotCode-Barcodes:
Samples of DotCode barcodes

Ein Punktcode ist allgemein eine Art Barcode, der Daten in einem Array von nominell getrennten Punkten an ausgewählten Positionen innerhalb eines regelmäßigen Rasters möglicher Positionen kodiert. DotCode ist ein Punktcode, dessen Array rechteckig ist und die Höhe "H" (Zeilen) und die Breite "W" (Spalten) aufweist.Genau die Hälfte der möglichen Punktpositionen steht für den Druck zur Verfügung, ähnlich den dunklen Quadraten eines Schachbrettmusters.
Die DotCode-Barcodematrix verfügt über keine festen oder Suchmuster. Ruhezonen mit einer Höhe von mindestens 3Y oder einer Breite von mindestens 3X umgeben die Datenpunktpositionen (siehe Abbildung unten).

DotCode-Barcodestruktur:
Structure of DotCode barcode


Allgemeine Merkmale von DotCode:



VintaSoft Barcode .NET SDK unterstützt das Lesen und Schreiben von DotCode-Barcodes.

Hier ist C#-Code, der zeigt, wie man einen DotCode-Barcode als Rasterbild generiert:
/// <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");
    }
}


Hier ist C#-Code, der zeigt, wie man einen DotCode-Barcode in Vektorform generiert:
/// <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();
}


Hier ist C#-Code, der zeigt, wie man einen DotCode-Barcode als SVG-Bild generiert:
/// <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();
}

Hier ist C#-Code, der zeigt, wie man einen DotCode-Barcode in einem Bild erkennt:
/// <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();
            }
        }
    }
}