如何设置二维码纠错级别

This article was translated from English: Does it need improvement?
Translated
View the article in English

掌控性能。 调整纠错设置,生成更快、更耐用的二维码,即使受损也能可靠地被扫描。

错误校正正是区分一个失效的二维码与一个持续有效的二维码的关键所在。 当打印的标签被刮花、贴纸脱落或海报在阳光下褪色时,错误校正功能将决定条码是否仍可被扫描。 IronQR 允许开发者精确设定 QR 码的耐用程度,从针对清晰数字显示屏优化的轻量级码,到专为仓库和工厂车间环境设计的重型码,一应俱全。

本指南演示了如何使用 IronQR 库配置错误纠正级别,以在任何使用场景下平衡数据密度与损伤容忍度。 初次接触 QR 码生成的开发者,建议先阅读《将 QR 码生成图片》指南。

快速入门:设置二维码纠错

通过 QrOptions 配置错误纠正级别,并生成一个抗损 QR 码。

  1. 使用 NuGet 包管理器安装 https://www.nuget.org/packages/IronQR

    PM > Install-Package IronQR
  2. 复制并运行这段代码。

    var options = new QrOptions(QrErrorCorrectionLevel.Medium);
    var qrCode = QrWriter.Write("https://example.com", options);
    qrCode.Save().SaveAs("qr-medium.png");
  3. 部署到您的生产环境中进行测试

    通过免费试用立即在您的项目中开始使用IronQR

    arrow pointer

理解错误更正级别

二维码采用里德-所罗门纠错码,即使部分受损或被遮挡,仍可被扫描。 IronQR 中的 QrErrorCorrectionLevel 枚举提供四个级别,每个级别都以牺牲数据容量为代价来换取更高的容错能力:

级别 恢复能力 最适合
QrErrorCorrectionLevel.Low ~7% 损坏 数字屏幕、受控环境
QrErrorCorrectionLevel.Medium ~15% 损坏 通用用途,中等耐用度
QrErrorCorrectionLevel.High ~25% 损坏 印刷品、户外标识
QrErrorCorrectionLevel.Highest ~30% 损坏 工业标签,恶劣环境

更高的纠错率会增加冗余模块,从而提高二维码的视觉密度。 这也会影响生成的图像大小,因此开发人员可能需要相应调整尺寸。 满足耐久性要求的最低级别能使代码保持紧凑且易于扫描。

二维码生成时设置错误更正级别

要设置错误更正级别,请将所需的 QrErrorCorrectionLevel 值传递给 QrOptions 构造函数。 然后在生成二维码时,将这些选项传递给 QrWriter.Write()

在此示例中,错误修正级别设置为"中等",可在保持代码紧凑的同时恢复多达 15% 的损坏数据。

:path=/static-assets/qr/content-code-examples/how-to/error-correction-qr-code.cs
using IronQr;
using IronSoftware.Drawing;

QrOptions options = new QrOptions(QrErrorCorrectionLevel.Medium);

// Create QR code
QrCode qr = QrWriter.Write("1234", options);

// Save QR code as a bitmap
AnyBitmap qrImage = qr.Save();

// Save QR code bitmap as file
qrImage.SaveAs("qrMedium.png");
Imports IronQr
Imports IronSoftware.Drawing

Dim options As New QrOptions(QrErrorCorrectionLevel.Medium)

' Create QR code
Dim qr As QrCode = QrWriter.Write("1234", options)

' Save QR code as a bitmap
Dim qrImage As AnyBitmap = qr.Save()

' Save QR code bitmap as file
qrImage.SaveAs("qrMedium.png")
$vbLabelText   $csharpLabel

输出

具有中度纠错能力的二维码

错误更正级别的比较

每个级别生成的二维码在视觉上都有所不同。 较低层级生成更简单的图案,扫描速度更快;而较高层级则生成更密集的图案,能够承受更大的损伤。 以下是生成各层级相同数据以便进行比较的方法:

:path=/static-assets/qr/content-code-examples/how-to/error-correction-qr-code-compare.cs
using IronQr;
using IronSoftware.Drawing;

string data = "https://ironsoftware.com";

// Low - ~7% recovery, smallest code
QrCode qrLow = QrWriter.Write(data, new QrOptions(QrErrorCorrectionLevel.Low));
qrLow.Save().SaveAs("qrLow.png");

// Medium - ~15% recovery, balanced
QrCode qrMedium = QrWriter.Write(data, new QrOptions(QrErrorCorrectionLevel.Medium));
qrMedium.Save().SaveAs("qrMedium.png");

// High - ~25% recovery, durable
QrCode qrHigh = QrWriter.Write(data, new QrOptions(QrErrorCorrectionLevel.High));
qrHigh.Save().SaveAs("qrHigh.png");

// Highest - ~30% recovery, maximum resilience
QrCode qrHighest = QrWriter.Write(data, new QrOptions(QrErrorCorrectionLevel.Highest));
qrHighest.Save().SaveAs("qrHighest.png");
Imports IronQr
Imports IronSoftware.Drawing

Dim data As String = "https://ironsoftware.com"

' Low - ~7% recovery, smallest code
Dim qrLow As QrCode = QrWriter.Write(data, New QrOptions(QrErrorCorrectionLevel.Low))
qrLow.Save().SaveAs("qrLow.png")

' Medium - ~15% recovery, balanced
Dim qrMedium As QrCode = QrWriter.Write(data, New QrOptions(QrErrorCorrectionLevel.Medium))
qrMedium.Save().SaveAs("qrMedium.png")

' High - ~25% recovery, durable
Dim qrHigh As QrCode = QrWriter.Write(data, New QrOptions(QrErrorCorrectionLevel.High))
qrHigh.Save().SaveAs("qrHigh.png")

' Highest - ~30% recovery, maximum resilience
Dim qrHighest As QrCode = QrWriter.Write(data, New QrOptions(QrErrorCorrectionLevel.Highest))
qrHighest.Save().SaveAs("qrHighest.png")
$vbLabelText   $csharpLabel

请注意更高的纠错级别会增加二维码中的模块数量,从而使图案更加密集。 如果扫描速度是首要考虑因素,建议选择能满足项目耐久性需求的最低配置。

输出

QR Code with Low Error Correction
具有中度纠错能力的二维码
QR Code with High Error Correction
QR Code with Highest Error Correction

根据使用场景选择合适的语体

合适的纠错级别取决于二维码的使用场景及其必须满足的要求:

使用案例 级别 为什么 相关指南
数字显示屏和网站 QrErrorCorrectionLevel.Low 屏幕洁净,背光正常,无物理磨损。 保持代码简洁,便于快速浏览。 将二维码生成图片
名片、传单和室内标识 QrErrorCorrectionLevel.Medium 轻微磨损和细微折痕不会影响扫描效果。 建议配合适当的页边距以获得最佳效果。 为二维码添加边距
产品包装和户外海报 QrErrorCorrectionLevel.High 运输过程中,材料会面临雨水、紫外线照射以及粗暴搬运。 放大尺寸以便远距离扫描。 调整二维码大小
仓库标签、工厂车间及工业标签 QrErrorCorrectionLevel.Highest 在严苛的环境中,代码可能被刮花、弄脏或部分遮盖。 最大限度的冗余确保了它们的正常运行。 从图片中读取二维码

如需了解更高级的二维码生成模式,请参阅 C# 二维码生成器教程以及 IronQR 的完整功能集

Curtis Chau
技术作家

Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。

除了开发之外,Curtis 对物联网 (IoT) 有浓厚的兴趣,探索将硬件和软件集成的新方法。在空闲时间,他喜欢玩游戏和构建 Discord 机器人,将他对技术的热爱与创造力相结合。

准备开始了吗?
Nuget 下载 63,625 | 版本: 2026.4 刚刚发布
Still Scrolling Icon

还在滚动吗?

想快速获得证据? PM > Install-Package IronQR
运行示例 观看您的 URL 变成 QR 代码。