Распознавание и генерация штрих-кодов Aztec используя VintaSoft Barcode .NET SDK

Категория: Штрих-коды.NET

16 июля 2025

VintaSoft Barcode .NET SDK это профессиональный кросс-платформенный SDK для Windows, Linux, macOS, Android, который позволяет распознавать и генерировать штрих-коды Aztec Code в .NET, WPF, Веб, MAUI. VintaSoft Barcode .NET SDK позволяет встраивать функциональность распознавания и генерации штрих-кодов Aztec Code, используя всего несколько строк кода.


Что такое штрих-код Aztec Code?

Штрих-код Aztec Code - это самый компактный двумерный матричный штрих-код. Он занимает меньше места, чем другие матричные штрих-коды, из-за отсутствия свободной зоны и компактного поискового паттерна. Отличительной особенностью штрих-кода Aztec Code является уникальный квадратный поисковый паттерн "bullseye" расположенный в центре штрих-кода:


Особенности штрих-кода Aztec Code

Штрих-код Aztec Code определяется стандартом ISO/IEC 24778 от 2008 года. Штрих-код Aztec Code может хранить смешанные данные различного типа в трех режимах кодирования:

Штрих-код Aztec Code использует алгоритм коррекции ошибок Reed-Solomon, что позволяет распознавать поврежденные штрих-коды. При создании штрих-кода пользователь может указать процент области данных, который будет использоваться кодовыми словами исправления ошибок.

Поддержка стандарта GS1 позволяет кодировать данные в формате GS1 (BarcodeSymbologySubsets.GS1Aztec).

Штрих-код Aztec Code может кодировать следующие специальные символы:


Штрих-код Aztec Rune – когда нужна простая метка

Существует специальная версия штрих-кода Aztec Code – Aztec Rune, которая может кодировать только одно число в диапазоне от 0 до 255 (один байт):


Штрих-код Aztec Rune имеет компактный размер – 11х11 модулей и может быть использован в качестве метки на производстве, например, для контроля ориентации упаковки, либо для контроля комплектации товара. Также данную метку можно использовать для создания ориентированной опорной точки на изображении, для этого VintaSoft Barcode .NET SDK предоставляет точные координаты центра поискового паттерна распознанного штрих-кода: AztecInfo.BulleyeCenter.

Данная возможность также может быть использована в бланках OMR для быстрого автоматического распознавания OMR форм. Подробнее о автоматическом выравнивании изображений используя штрих-код Aztec Rune можно прочитать в статье Использование 2D штрих-кодов для выравнивания изображений в .NET/C#.


Структура матрицы

Матрица штрих-кода Aztec Code имеет две версии - полноразмерная и компактная. Компактная версия может иметь до 4 слоев данных (полноразмерная имеет до 32 слоев) и отличается уменьшенным посковым паттерном и отсутствием тайминг паттернов:
     


Штрих-код Aztec Code может быть не только квадратным благодаря специальному символу "Structure Append"

Штрих-код Aztec Code поддерживает специальный символ "Structure Append", который позволяет разделить данные на несколько штрих-кодов Aztec Code. "Structure Append" cимвол кодируется в штрих-коде и позволяет однозначно определить количество штрих-кодов-частей и их порядок.

Благодаря тому, что штрих-код Aztec Code не имеет свободной зоны можно создавать прямоугольные штрих-коды Aztec Code для маркировки вытянутой области:


VintaSoft Barcode .NET SDK содержит алгоритм восстановления данных из набора штрих-кодов-частей Aztec Code, которые были разделены используя символ "Structure Append".


Какие штрих-коды Aztec может распознавать VintaSoft Barcode .NET SDK?

VintaSoft Barcode .NET SDK распознает все типы штрих-кодов Aztec Code и Aztec Rune. При распознавании применяются уникальные алгоритмы позволяющие быстро распознавать штрих-коды, которые имеют различные проблемы:



Вот C# код, который демонстрирует как распознать штрих-коды Aztec Code в изображении, которое получено с камеры:
/// <summary>
/// Reads Aztec Code barcodes from a <see cref="System.Drawing.Bitmap"/>.
/// </summary>
/// <param name="bitmap">A bitmap with barcodes.</param>
public static void ReadAztecCodeBarcodesFromBitmap(System.Drawing.Bitmap bitmap)
{
    // create barcode reader
    using (Vintasoft.Barcode.BarcodeReader reader = new Vintasoft.Barcode.BarcodeReader())
    {
        // specify that reader must search for Aztec barcodes
        reader.Settings.ScanBarcodeTypes = Vintasoft.Barcode.BarcodeType.Aztec;

        // 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();
            }
        }
    }
}


Какие штрих-коды Aztec может генерировать VintaSoft Barcode .NET SDK?

VintaSoft Barcode .NET SDK генерирует все типы штрих-кодов Aztec Code и Aztec Rune.

Вот C# код, который демонстрирует как сгенерировать растровое изображение штрих-кода Aztec Code:
/// <summary>
/// Returns the Aztec Code 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 GetAztecCodeBarcodeAsBitmap(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.Aztec;
        barcodeWriter.Settings.Value = value;

        // get a barcode image as System.Drawing.Bitmap
        return Vintasoft.Barcode.GdiExtensions.GetBarcodeAsBitmap(barcodeWriter);
    }
}


Вот C# код, который демонстрирует как сгенерировать векторное (SVG) изображение штрих-кода Aztec Code:
/// <summary>
/// Returns the Aztec Code barcode in vector form as a SVG string.
/// </summary>
/// <param name="barcodeValue">Barcode value.</param>
public static void GetAztecCodeBarcodeAsSvgString(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.Aztec;
        barcodeWriter.Settings.Value = barcodeValue;

        // generate Aztec Code barcode as a SVG string
        return barcodeWriter.GetBarcodeAsSvgFile();
    }
}