.NET C#利用ZXing生成、识别二维码与条形码

Dylan
Dylan
发布时间:2026-10-13 | 6人浏览过
原创

本文将详细讲解如何在.NET C#环境中使用ZXing.Net库实现二维码与条形码的生成和识别功能,包括关键参数配置、代码示例及常见格式设置。

准备工作:引入ZXing.Net库

在使用ZXing之前,需要确保项目中已正确添加ZXing.Net的引用。虽然原文提供了旧版CodePlex链接,但在现代.NET开发中,建议通过NuGet包管理器安装 ZXing.Net 以保持版本兼容性和安全性。

  1. 打开Visual Studio或命令行工具。
  2. 运行命令 Install-Package ZXing.Net 或在NuGet界面搜索安装。
  3. 在代码文件中引入命名空间:using ZXing;

生成二维码

生成二维码的核心类是 BarcodeWriter。通过配置 QrCodeEncodingOptions 可以控制二维码的属性,如字符集、纠错等级、尺寸等。

第1步:配置编码选项

目的: 设置二维码的参数以确保兼容性和可读性。
入口: 代码中的 QrCodeEncodingOptions 实例。
动作: 初始化并设置关键属性。

QrCodeEncodingOptions options = new QrCodeEncodingOptions();
options.CharacterSet = "UTF-8";
options.DisableECI = true; // 禁用扩展通道解释,提高通用扫描器兼容性
options.ErrorCorrection = ZXing.QrCode.Internal.ErrorCorrectionLevel.H; // H级纠错,约30%纠错能力
options.Width = 300;
options.Height = 300;
options.Margin = 1;
  • 纠错级别说明:
    • L - 约7% 纠错能力
    • M - 约15% 纠错能力
    • Q - 约25% 纠错能力
    • H - 约30% 纠错能力

第2步:创建Writer并生成图像

目的: 将文本转换为二维码图像并输出。
入口: BarcodeWriter 实例。
动作: 指定格式为 QR_CODE,调用 Write 方法生成位图。

BarcodeWriter writer = new BarcodeWriter();
writer.Format = BarcodeFormat.QR_CODE;
writer.Options = options;

// 生成二维码图像
using (Bitmap bmp = writer.Write("https://example.com")) 
{
    using (MemoryStream ms = new MemoryStream())
    {
        bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
        // 此处可将 ms.ToArray() 写入HTTP响应或保存文件
        // Response.ContentType = "image/png";
        // Response.BinaryWrite(ms.ToArray());
    }
}

生成条形码

条形码(如Code128)的生成逻辑与二维码类似,但使用的格式枚举不同,且通常不需要高纠错级别,因为条形码主要依赖精确的线性编码。

第1步:配置条形码选项

目的: 设置条形码的宽度和显示模式。
入口: EncodingOptions 实例。

EncodingOptions options = new EncodingOptions();
options.CharacterSet = "UTF-8";
options.Width = 300;
options.Height = 50;
options.Margin = 1;
options.PureBarcode = false; // false表示在条码下方显示数字

第2步:生成Code128条形码

目的: 输出标准Code128条形码图像。
动作: 设置 Format 为 CODE_128。

BarcodeWriter writer = new BarcodeWriter();
writer.Format = BarcodeFormat.CODE_128;
writer.Options = options;

using (Bitmap bmp = writer.Write("12345678"))
{
    // 处理生成的bmp对象,如保存到文件或流中
}

识别二维码与条形码

识别功能使用 BarcodeReader 类,它支持多种格式,可自动检测输入图像中的码类型。

第1步:读取图像并解码

目的: 从本地图片文件中提取码数据。
入口: 加载 Bitmap 对象。

BarcodeReader reader = new BarcodeReader();
reader.Options.CharacterSet = "UTF-8";

// 假设D:\\qr.png为包含二维码或条形码的图片路径
using (Bitmap bmp = new Bitmap(@"D:\\qr.png"))
{
    Result result = reader.Decode(bmp);
    if (result != null)
    {
        Console.WriteLine(result.Text); // 输出解析后的字符串内容
    }
    else
    {
        Console.WriteLine("未找到有效的二维码或条形码。");
    }
}

注意事项与扩展

  • 内存管理: 操作图像时务必使用 using 语句确保 Bitmap 和 MemoryStream 被正确释放,防止内存泄漏。
  • 背景修改: 若需在二维码中添加Logo或更改背景色,可在生成前对 Bitmap 进行绘图处理,或使用ZXing的高级定制功能。
  • 异步支持: 在Web应用中,建议在后台线程执行图像生成或解码操作,以避免阻塞主UI或请求线程。

以上就是利用ZXing在.NET C#中生成和识别二维码/条形码的详细内容,更多关于C#图形处理与第三方库集成的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表