使用 VintaSoft Barcode .NET SDK 识别和生成 QR 码条形码

博客分类:条形码   .NET

2025/06/24

VintaSoft Barcode .NET SDK 是一款专业的跨平台 SDK,支持 Windows、Linux 和 macOS,可在 .NET、WPF、Web 和 MAUI 中识别和生成二维码。您只需几行代码即可将识别和生成二维码的功能添加到您的 .NET 应用程序中。

什么是二维码?

二维码是一种二维矩阵条形码,也是世界上最常用的二维条形码。这种条形码的名称反映了其开发理念--"快速响应",即在任意倾斜角度下都能快速识别。二维码的一个显著特征是清晰可辨的搜索图案--条形码四个角上的黑色方块:


二维码的特点

所有现代制造商都使用符合 ISO/IEC 18004 标准的二维码。AIM ITS/97-001 标准描述的是二维码模型 1,这是一个过时的条形码版本。不建议使用。

二维码条形码可以存储各种类型的混合数据,并支持四种编码模式:

二维码条形码采用里德-所罗门纠错算法,可以识别损坏的条形码。创建条形码时,根据预期使用条件选择 4 个纠错级别之一:纠错级别越高,条形码中可存储的数据量就越少。


条形码矩阵结构

QR 码和 Micro QR 码矩阵具有以下结构:



什么是"Micro QR"?

Micro QR 条形码是 QR 码条形码的紧凑版本。微型二维码通常用于标记小型包装:


微型二维码只有一个搜索模式。这种条码的数据量非常有限:


什么是"GS1 QR"条形码?

"GS1 QR"条形码是一种以GS1系统数据格式存储值的QR条形码。VintaSoft Barcode .NET SDK可以生成和识别"GS1 QR"条形码。
以下是"GS1 QR"条形码的图片:


什么是"GS1 Digital Link QR"?

"GS1 Digital Link QR"条形码是一种以 GS1 数字链接格式存储值的 QR 条形码。VintaSoft Barcode .NET SDK 可以生成和识别"GS1 Digital Link QR"条形码。
以下是"GS1 Digital Link QR"条形码的图像:


什么是"XFA Compressed QR"条形码?

"XFA Compressed QR"条形码是一种根据 Adobe XFA 规范压缩数据并存储数据的 QR 条形码。 VintaSoft Barcode .NET SDK 可以生成和识别"XFA Compressed QR"条形码。
以下是"XFA Compressed QR"条形码的图像:


什么是"Swiss QR Code"条形码?

"Swiss QR Code"条形码是二维码的一个子集,自 2022 年 10 月 1 日起在瑞士和列支敦士登用于发票。VintaSoft Barcode .NET SDK 可以生成和识别"Swiss QR Code"条形码
以下是"Swiss QR Code"条形码的图片:


什么是"HIBC LIC QR 码"?

"HIBC LIC QR 码"是 QR 码条形码的一个子集,用于医疗器械 UDI 合规性,识别制造商、产品和批次。VintaSoft Barcode .NET SDK 可以生成和识别"HIBC LIC QR 码"。
以下是"HIBC LIC QR Code"条形码的图像:


特殊"结构附加"符号

二维码条形码支持一种名为"Structure append"的特殊符号,该符号允许将数据分割成多个二维码条形码。该符号编码在条形码中,可以清晰地确定条形码部分的数量及其顺序。此功能可用于标记狭长区域或放置大量数据。


VintaSoft Barcode .NET SDK 允许您拆分数据并生成多个通过"结构附加"符号链接的二维码。该 SDK 还包含一个算法,用于从使用"结构附加"符号拆分的一组二维码中恢复数据。


VintaSoft Barcode .NET SDK 可以识别哪些二维码?

VintaSoft Barcode .NET SDK 可以识别所有类型的 QR 和 Micro QR 条形码。它使用独特的算法进行识别,可以快速识别存在各种问题的条形码:


以下是一段 C# 代码,演示如何识别相机拍摄图像中的 QR 码条形码:
/// <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();
            }
        }
    }
}


VintaSoft Barcode .NET SDK 可以生成哪些 QR 码条形码?

VintaSoft Barcode .NET SDK 可以生成所有类型的 QR 码和 Micro QR 码。

以下是一段 C# 代码,演示如何生成二维码条形码的栅格图像:
/// <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# 代码,演示如何生成微型二维码条形码的栅格图像:
/// <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) 图像:
/// <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();
    }
}