VintaSoft Barcode .NET SDK 是一款专业的跨平台 SDK,支持 Windows、Linux 和 macOS,可在 .NET、WPF、Web 和 MAUI 中识别和生成二维码。您只需几行代码即可将识别和生成二维码的功能添加到您的 .NET 应用程序中。
什么是二维码?
二维码是一种二维矩阵条形码,也是世界上最常用的二维条形码。这种条形码的名称反映了其开发理念--"快速响应",即在任意倾斜角度下都能快速识别。二维码的一个显著特征是清晰可辨的搜索图案--条形码四个角上的黑色方块:
二维码的特点
所有现代制造商都使用符合 ISO/IEC 18004 标准的二维码。AIM ITS/97-001 标准描述的是二维码模型 1,这是一个过时的条形码版本。不建议使用。
二维码条形码可以存储各种类型的混合数据,并支持四种编码模式:
- 字母数字(最多 4296 个字符)
- 字节(最多 2953 字节)
- 数字(最多 7089 位数字)
- 汉字(最多 1817 个字符)
二维码条形码采用里德-所罗门纠错算法,可以识别损坏的条形码。创建条形码时,根据预期使用条件选择 4 个纠错级别之一:纠错级别越高,条形码中可存储的数据量就越少。
条形码矩阵结构
QR 码和 Micro QR 码矩阵具有以下结构:
- 静默区
- 搜索模式
- 格式信息
- 时序模式
- 对齐模式
- 数据和纠错层
什么是"Micro QR"?
Micro QR 条形码是 QR 码条形码的紧凑版本。微型二维码通常用于标记小型包装:
微型二维码只有一个搜索模式。这种条码的数据量非常有限:
- 字母数字(最多 21 个字符)
- 字节(最多 15 个字节)
- 数字(最多 35 位数字)
- 汉字(最多 9 个字符)
什么是"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();
}
}