如何设置二维码纠错级别
掌控性能。 调整纠错设置,生成更快、更耐用的二维码,即使受损也能可靠地被扫描。
错误校正正是区分一个失效的二维码与一个持续有效的二维码的关键所在。 当打印的标签被刮花、贴纸脱落或海报在阳光下褪色时,错误校正功能将决定条码是否仍可被扫描。 IronQR 允许开发者精确设定 QR 码的耐用程度,从针对清晰数字显示屏优化的轻量级码,到专为仓库和工厂车间环境设计的重型码,一应俱全。
本指南演示了如何使用 IronQR 库配置错误纠正级别,以在任何使用场景下平衡数据密度与损伤容忍度。 初次接触 QR 码生成的开发者,建议先阅读《将 QR 码生成图片》指南。
快速入门:设置二维码纠错
通过 QrOptions 配置错误纠正级别,并生成一个抗损 QR 码。
最小工作流程(5 个步骤)
- 下载 IronQR C# 库,生成带纠错功能的二维码
- 使用选定的 `ErrorCorrectionLevel` 创建一个 `QrOptions` 对象
- 使用 `QrWriter.Write()` 并指定这些选项生成二维码
- 使用 `Save()` 将二维码保存为位图
- 使用 `SaveAs()` 将位图导出为图像文件
理解错误更正级别
二维码采用里德-所罗门纠错码,即使部分受损或被遮挡,仍可被扫描。 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")
输出
错误更正级别的比较
每个级别生成的二维码在视觉上都有所不同。 较低层级生成更简单的图案,扫描速度更快;而较高层级则生成更密集的图案,能够承受更大的损伤。 以下是生成各层级相同数据以便进行比较的方法:
: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")
输出
低(~7% 恢复率)
中等难度(约15%的恢复率)
高(~25% 恢复率)
最高(~30% 恢复率)
根据使用场景选择合适的语体
合适的纠错级别取决于二维码的使用场景及其必须满足的要求:
| 使用案例 | 级别 | 为什么 | 相关指南 |
|---|---|---|---|
| 数字显示屏和网站 | QrErrorCorrectionLevel.Low |
屏幕洁净,背光正常,无物理磨损。 保持代码简洁,便于快速浏览。 | 将二维码生成图片 |
| 名片、传单和室内标识 | QrErrorCorrectionLevel.Medium |
轻微磨损和细微折痕不会影响扫描效果。 建议配合适当的页边距以获得最佳效果。 | 为二维码添加边距 |
| 产品包装和户外海报 | QrErrorCorrectionLevel.High |
运输过程中,材料会面临雨水、紫外线照射以及粗暴搬运。 放大尺寸以便远距离扫描。 | 调整二维码大小 |
| 仓库标签、工厂车间及工业标签 | QrErrorCorrectionLevel.Highest |
在严苛的环境中,代码可能被刮花、弄脏或部分遮盖。 最大限度的冗余确保了它们的正常运行。 | 从图片中读取二维码 |
如需了解更高级的二维码生成模式,请参阅 C# 二维码生成器教程以及 IronQR 的完整功能集。

