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

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

24 июня 2025

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

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

QR Code это двумерный матричный штрих-код, который является наиболее часто используемым двумерным штрих-кодом в мире. В названии данного штрих-кода заложена идея его разработки – «Quick Response», быстрое распознавание при произвольном угле наклона. Отличительной особенностью штрих-кода QR Code являются хорошо различимые поисковые паттерны – черные квадраты по углам штрих-кода:


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

Все современные производители используют штрих-коды QR Code, которые описаны в стандарте ISO/IEC 18004. Стандарт AIM ITS/97-001 описывает QR Code Model 1 – устаревшую версию штрих-кода использование которой не рекомендуется.

Штрих-код QR Code может хранить смешанные данные различного типа в четырех режимах кодирования:

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


Штрих-код Micro QR

Штрих-код Micro QR – это компактная версия штрих-кода QR Code. Штрих-код Micro QR обычно используется для маркировки небольших упаковок:


Штрих-код Micro QR имеет только один поисковый паттерн. Количество данных в данном штрих-коде сильно ограничено:


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

Матрицы штрих-кодов QR и Micro QR имеют следующую структуру:



Специальный символ Structure Append

Штрих-код QR Code поддерживает специальный символ «Structure Append», который позволяет разделить данные на несколько штрих-кодов QR Code. Символ кодируется в штрих-коде и позволяет однозначно определить количество штрих-кодов-частей и их порядок. Данная возможность может быть использована для маркировки вытянутой области либо размещения большого массива данных.


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


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

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


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

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


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

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

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

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


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

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


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

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