VintaSoft Barcode .NET SDK 16.0: Documentation for .NET developer
Vintasoft.Barcode Namespace / BarcodeLayoutInfo Class
Members Object Syntax Remarks Example Hierarchy Requirements SeeAlso
In This Topic
    BarcodeLayoutInfo Class
    In This Topic
    Provides information about barcode layout on an image.
    Object Model
    BarcodeLayoutInfo
    Syntax
    'Declaration
    
    Public Class BarcodeLayoutInfo
       Inherits BarcodeRegionDetector
    
    
    public class BarcodeLayoutInfo : BarcodeRegionDetector
    
    
    public __gc class BarcodeLayoutInfo : public BarcodeRegionDetector*
    
    
    public ref class BarcodeLayoutInfo : public BarcodeRegionDetector^
    
    
    Remarks

    If image contains several barcodes, information about approximate location of barcodes in image can greatly increase the barcode recognition performance.

    Example

    This example shows how to provide information about barcode locations on an image to barcode reader.

    
    Imports Vintasoft.Barcode
    Imports Vintasoft.Barcode.BarcodeInfo
    Imports Vintasoft.Barcode.SymbologySubsets
    Imports Vintasoft.Primitives
    
    ''' <summary>
    ''' Test that shows how to provide information about barcode locations in an image to barcode reader.
    ''' </summary>
    Public Class BarcodeLayoutInfoExample
        ''' <summary>
        ''' Runs the test.
        ''' </summary>
        Public Shared Sub Test()
            ReadBarcodes("BarcodeLayoutInfoTest1.png", "BarcodeLayoutInfoTest2.png")
        End Sub
    
        ''' <summary>
        ''' Reads barcodes from images, which are stored in files.
        ''' </summary>
        Public Shared Sub ReadBarcodes(ParamArray filenames As String())
            Dim barcodeLayoutInfo As New BarcodeLayoutInfo()
    
            ' add information about EAN13 barcode that is located in the left-bottom part of an image
            barcodeLayoutInfo.AddBarcodeInfoRelative(BarcodeType.EAN13, New VintasoftRect(0, 0.4, 0.3, 0.6))
    
            ' add information about DataMatrix barcode that is located in the center of an image
            barcodeLayoutInfo.AddBarcodeInfoRelative(BarcodeType.DataMatrix, New VintasoftRect(0.25, 0.25, 0.5, 0.5))
    
            ' create barcode reader
            Using reader As New BarcodeReader()
                ' set barcode layout info
                reader.BarcodeRegionDetectors = New BarcodeRegionDetectors(barcodeLayoutInfo)
    
                ' specify that reader must search for EAN13 and GS1 DataMatrix barcodes
                reader.Settings.ScanBarcodeTypes = BarcodeType.EAN13
                reader.Settings.ScanBarcodeSubsets.Add(BarcodeSymbologySubsets.GS1DataMatrix)
    
                ' for each filename
                For Each filename As String In filenames
                    Console.Write(String.Format("{0}: ", filename))
    
                    ' read barcodes
                    Dim infos As IBarcodeInfo() = reader.ReadBarcodes(filename)
    
                    ' show barcode recognition results
                    If infos.Length = 0 Then
                        Console.WriteLine("No barcodes found.")
                    Else
                        Console.WriteLine(String.Format("{0} barcodes found ({1}ms):", infos.Length, reader.RecognizeTime.TotalMilliseconds))
                        For i As Integer = 0 To infos.Length - 1
                            Dim info As IBarcodeInfo = infos(i)
                            Dim name As String = info.BarcodeType.ToString()
                            If TypeOf info Is BarcodeSubsetInfo Then
                                name = DirectCast(info, BarcodeSubsetInfo).BarcodeSubset.Name
                            End If
                            Console.WriteLine(String.Format("{0}: [{1}] {2}", i + 1, name, info.Value))
                        Next
                        Console.WriteLine()
                    End If
                Next
            End Using
        End Sub
    End Class
    
    
    
    using System;
    using Vintasoft.Barcode;
    using Vintasoft.Barcode.BarcodeInfo;
    using Vintasoft.Barcode.SymbologySubsets;
    using Vintasoft.Primitives;
    
    /// <summary>
    /// Test that shows how to provide information about barcode locations in an image to barcode reader.
    /// </summary>
    public class BarcodeLayoutInfoExample
    {
        /// <summary>
        /// Runs the test.
        /// </summary>
        public static void Test()
        {
            ReadBarcodes("BarcodeLayoutInfoTest1.png", "BarcodeLayoutInfoTest2.png");
        }
    
        /// <summary>
        /// Reads barcodes from images, which are stored in files.
        /// </summary>
        public static void ReadBarcodes(params string[] filenames)
        {
            BarcodeLayoutInfo barcodeLayoutInfo = new BarcodeLayoutInfo();
    
            // add information about EAN13 barcode that is located in the left-bottom part of an image
            barcodeLayoutInfo.AddBarcodeInfoRelative(BarcodeType.EAN13, new VintasoftRect(0, 0.4, 0.3, 0.6));
    
            // add information about DataMatrix barcode that is located in the center of an image
            barcodeLayoutInfo.AddBarcodeInfoRelative(BarcodeType.DataMatrix, new VintasoftRect(0.25, 0.25, 0.5, 0.5));
    
            // create barcode reader
            using (BarcodeReader reader = new BarcodeReader())
            {
                // set barcode layout info
                reader.BarcodeRegionDetectors = new BarcodeRegionDetectors(barcodeLayoutInfo);
    
                // specify that reader must search for EAN13 and GS1 DataMatrix barcodes
                reader.Settings.ScanBarcodeTypes = BarcodeType.EAN13;
                reader.Settings.ScanBarcodeSubsets.Add(BarcodeSymbologySubsets.GS1DataMatrix);
    
                // for each filename
                foreach (string filename in filenames)
                {
                    Console.Write(string.Format("{0}: ", filename));
    
                    // read barcodes
                    IBarcodeInfo[] infos = reader.ReadBarcodes(filename);
    
                    // show barcode recognition results
                    if (infos.Length == 0)
                    {
                        Console.WriteLine("No barcodes found.");
                    }
                    else
                    {
                        Console.WriteLine(string.Format("{0} barcodes found ({1}ms):", infos.Length, reader.RecognizeTime.TotalMilliseconds));
                        for (int i = 0; i < infos.Length; i++)
                        {
                            IBarcodeInfo info = infos[i];
                            string name = info.BarcodeType.ToString();
                            if (info is BarcodeSubsetInfo)
                                name = ((BarcodeSubsetInfo)info).BarcodeSubset.Name;
                            Console.WriteLine(string.Format("{0}: [{1}] {2}", i + 1, name, info.Value));
                        }
                        Console.WriteLine();
                    }
                }
            }
        }
    }
    
    

    Inheritance Hierarchy

    System.Object
       Vintasoft.Barcode.BarcodeRegionDetector
          Vintasoft.Barcode.BarcodeLayoutInfo

    Requirements

    Target Platforms: .NET 10; .NET 9; .NET 8; .NET 7; .NET 6; .NET Framework 4.8, 4.7, 4.6, 4.5, 4.0, 3.5

    See Also