使用 VintaSoft Barcode .NET SDK 识别和生成 Data Matrix 条形码。

博客分类:条形码   .NET

2025/08/19

VintaSoft Barcode .NET SDK 是一款专业的跨平台 SDK,支持 Windows、Linux 和 macOS 系统,可用于在 .NET、WPF、Web 和 MAUI 中识别和生成 Data Matrix 条形码。VintaSoft Barcode .NET SDK 只需几行代码即可嵌入 Data Matrix 条形码的识别和生成功能。


什么是 Data Matrix 条形码?

Data Matrix 是一种二维矩阵条码,已广泛应用于工业、生产和产品标签领域。Data Matrix 条码的一个显著特征是其两侧的实线"L"形搜索图案:



Data Matrix 条码的特点

现代 Data Matrix 条码版本 ECC200 由 2006 年发布的 ISO/IEC 16022 标准定义。该标准还描述了 ECC000 至 ECC140 的旧版本,但不建议使用这些旧版本。

Data Matrix 条形码可以存储不同类型的混合数据,支持三种编码模式:

Data Matrix 条形码使用里德-所罗门纠错算法,可以识别损坏的条形码。

支持GS1标准允许您以GS1格式编码数据(BarcodeSymbologySubsets.GS1DataMatrix)。

Data Matrix 条形码可以编码以下特殊符号:


矩形 Data Matrix 条形码 - 当标记区域不是正方形时

矩形 Data Matrix 条形码有 6 种特殊版本:


当可用区域不足以容纳正方形条形码时,这些条形码用于小型物品。


Data Matrix 条形码结构

Data Matrix 条形码矩阵版本 ECC200 有 24 种正方形版本,尺寸范围从 10x10 到 144x144 个模块,以及矩形版本:8x18、8x32、12x26、12x36、16x36 和 16x48 个模块。条形码的方向由搜索模式"L"决定,其中心位于条形码的左下角。



区分现代版本的Data Matrix ECC200和过时的ECC000-ECC140版本很容易:ECC200版本的矩阵大小始终为偶数,而ECC000-140版本的矩阵大小始终为奇数,因此ECC200版本的右上角始终有一个白色模块,而过时的版本始终有一个黑色模块。


什么是"GS1 DataMatrix"条形码?

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


什么是"GS1 Digital Link DataMatrix"条形码?

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


什么是 PPN 条形码?

PPN 条形码是一种 DataMatrix 条形码,在全球范围内用于制药行业的追踪、识别和防伪。 VintaSoft Barcode .NET SDK 可以生成和识别 PPN 条形码。
以下是 PPN 条形码的图片:


什么是"Royal Mail Mailmark CMDM"条形码?

"Royal Mail Mailmark CMDM"条形码是一种 DataMatrix 条形码,旨在实现英国邮件的自动分拣和跟踪。VintaSoft Barcode .NET SDK 可以生成和识别"Royal Mail Mailmark CMDM"条形码。
以下是"Royal Mail Mailmark CMDM"条形码的图片:


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

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


什么是"ISBT 128 DataMatrix"条形码?

"ISBT 128 DataMatrix"条形码是DataMatrix条形码的一个子集,包含输血和移植所需的信息。VintaSoft Barcode .NET SDK可以生成和识别"ISBT 128 DataMatrix"条形码。
以下是"ISBT 128 DataMatrix"条形码的图像:


什么是"HIBC LIC DataMatrix"条形码?

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


如果您需要编码大量数据,可以使用特殊符号"结构附加"

Data Matrix 条码支持特殊符号"结构附加",该符号允许您将数据拆分为多个 Data Matrix 条码。"结构附加"符号编码在条码中,可让您精确确定条码部分的数量及其顺序:

VintaSoft Barcode .NET SDK 包含一个算法,用于从一组条形码(Data Matrix 的一部分)中恢复数据,这些条形码使用"结构附加"符号进行分离。


VintaSoft Barcode .NET SDK 可以识别哪些 Data Matrix 条码?

VintaSoft Barcode .NET SDK 可识别所有 ECC200 版本的 Data Matrix 条码。在识别过程中,VintaSoft Barcode .NET SDK 使用独特的算法,能够快速识别存在各种问题的条形码:



以下 C# 代码演示了如何识别相机拍摄图像中的 Data Matrix 条码:
/// <summary>
/// Reads Data Matrix barcodes from a <see cref="System.Drawing.Bitmap"/>.
/// </summary>
/// <param name="bitmap">A bitmap with barcodes.</param>
public static void ReadDataMatrixBarcodesFromBitmap(System.Drawing.Bitmap bitmap)
{
    // create barcode reader
    using (Vintasoft.Barcode.BarcodeReader reader = new Vintasoft.Barcode.BarcodeReader())
    {
        // specify that reader must search for Data Matrix barcodes
        reader.Settings.ScanBarcodeTypes = Vintasoft.Barcode.BarcodeType.DataMatrix;

        // 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 可以生成哪些 Data Matrix 条码?

VintaSoft Barcode .NET SDK 可生成所有类型的 Data Matrix 条形码。

以下是演示如何生成 Data Matrix 条形码位图的 C# 代码:
/// <summary>
/// Returns the Data Matrix 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 GetDataMatrixBarcodeAsBitmap(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.DataMatrix;
        barcodeWriter.Settings.Value = value;

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


以下是演示如何生成 Data Matrix 条形码矢量 (SVG) 图像的 C# 代码:
/// <summary>
/// Returns the Data Matrix barcode in vector form as a SVG string.
/// </summary>
/// <param name="barcodeValue">Barcode value.</param>
public static void GetDataMatrixBarcodeAsSvgString(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.DataMatrix;
        barcodeWriter.Settings.Value = barcodeValue;

        // generate Data Matrix barcode as a SVG string
        return barcodeWriter.GetBarcodeAsSvgFile();
    }
}