How To Set Error Correction in C# | IronQR

如何在 C# 中设置纠错

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

C# 条形码中的纠错是通过 IronBarcode 的 QRCodeWriter.CreateQrCode 方法中的 QrErrorCorrectionLevel 参数来设置的,支持四个级别(L, M, Q, H ),可以恢复 7-30% 的损坏数据,更高的级别可以创建更复杂的 QR 码。

错误校正在条形码中指的是在出现视觉缺陷或编码错误的情况下,保持条形码可读性的能力。 这些损害可能是由于打印缺陷、污迹、划痕或扫描条件差异等因素造成的。 纠错是决定适合哪种类型条形码编码的主要因素,尤其是在使用 C# 中的 QR 代码时。

一般来说,由于以下因素,2D条形码比1D条形码对缺陷具有更高的容忍度:

  • 数据容量:二维条形码比一维条形码存储更多数据,可在水平和垂直方向进行编码。 了解有关支持的条形码格式的更多信息。
  • 冗余:2D条形码有多层数据编码,即使条形码的一部分受损,也能从剩余完好部分提取信息。
  • 紧凑性:由于其紧凑的形状,2D条形码适用于有限的空间。
  • 灵活性:2D条形码可以从各种角度和方向进行扫描。

在处理不完美条形码和图像校正等扫描条件不理想的情况时,纠错变得尤为重要。

快速入门:在QR码创建中使用错误校正级别

这个简短的示例展示了如何使用 IronBarcode 生成二维码,并将纠错级别设置为中等。 开发人员可以使用 CreateQrCode 方法来设置内容、大小和纠错级别。

Nuget Icon立即开始使用 NuGet 创建 PDF 文件:

  1. 使用 NuGet 包管理器安装 IronBarcode

    PM > Install-Package BarCode

  2. 复制并运行这段代码。

    var qr = IronBarCode.QRCodeWriter.CreateQrCode("https://ironsoftware.com", 500, IronBarCode.QRCodeWriter.QrErrorCorrectionLevel.Medium).SaveAsPng("qr.png");
  3. 部署到您的生产环境中进行测试

    立即开始在您的项目中使用 IronBarcode,免费试用!
    arrow pointer


如何调整二维码中的纠错功能? 目前,IronBarcode 支持在 **QR码**、**Micro QRs**和 **rMQRs**中设置纠错,作为其综合[条码生成功能](https://ironsoftware.com/csharp/barcode/features/generate/)的一部分。 它支持QR码标准指定的所有四个预设错误校正级别。 The error correction level is adjusted via the **QrErrorCorrectionLevel** parameter in the QRCodeWriter.CreateQrCode method. 四个错误校正级别是: - **最高**:等级**H**。 可以恢复多达30%的数据。 - **高**:等级**Q**。 可以恢复多达25%的数据。 - **中等**:等级**M**。 可以恢复多达15%的数据。 - **低**:等级**L**。 可以恢复多达7%的数据。 更高的错误校正级别会导致更加复杂的QR码图像,在生成QR码时需要在视觉清晰度和错误校正之间取得平衡。 下面的代码示例演示了如何设置错误校正: ```csharp :path=/static-assets/barcode/content-code-examples/how-to/set-error-correction.cs ```

我应该选择哪个纠错级别? 纠错级别的选择取决于您的具体使用情况和环境。 对于 QR 码可能会受到物理损坏、污垢或部分遮挡的应用,建议使用较高的纠错级别(`Q` 或 `H`)。 这些级别提供了更好的[容错性](https://ironsoftware.com/csharp/barcode/features/fault-tolerance/),但代价是增加了 QR 代码的复杂性和大小。 对于数字显示或高质量印刷等干净、受控的环境,较低的纠错级别(`L` 或 `M`)可能就足够了。这些工具生成的 QR 代码更简单、密度更低,在较小尺寸下更容易扫描。 考虑这些因素: - **物理环境**:户外或工业环境受益于更高的纠错能力 - **打印质量**:较低质量的打印需要较高的纠错能力 - **尺寸限制**:篇幅有限,可能需要降低纠错率以提高可读性 - **扫描距离**:较长的扫描距离对较简单的二维码效果更好 下面的示例展示了如何生成具有不同纠错级别的 QR 代码,以供比较: ```csharp using IronBarCode; using System.Drawing; // Generate QR codes with all four error correction levels var content = "https://ironsoftware.com/csharp/barcode/"; int size = 500; // Create QR codes with different error correction levels var lowCorrection = QRCodeWriter.CreateQrCode(content, size, QRCodeWriter.QrErrorCorrectionLevel.Low); var mediumCorrection = QRCodeWriter.CreateQrCode(content, size, QRCodeWriter.QrErrorCorrectionLevel.Medium); var highCorrection = QRCodeWriter.CreateQrCode(content, size, QRCodeWriter.QrErrorCorrectionLevel.High); var highestCorrection = QRCodeWriter.CreateQrCode(content, size, QRCodeWriter.QrErrorCorrectionLevel.Highest); // Save each with descriptive filenames lowCorrection.SaveAsPng("qr_low_correction.png"); mediumCorrection.SaveAsPng("qr_medium_correction.png"); highCorrection.SaveAsPng("qr_high_correction.png"); highestCorrection.SaveAsPng("qr_highest_correction.png"); ```

哪些参数控制纠错? The primary parameter controlling error correction in IronBarcode is the QrErrorCorrectionLevel enumeration. This parameter is passed to the CreateQrCode method and determines how much redundant data is embedded in the QR code. 当[创建自定义 QR 代码](https://ironsoftware.com/csharp/barcode/examples/csharp-custom-qr-code/)时,您可以将纠错设置与其他样式选项结合起来: ```csharp using IronBarCode; // Create a styled QR code with high error correction var styledQr = QRCodeWriter.CreateQrCode("Important Data", 500, QRCodeWriter.QrErrorCorrectionLevel.High); // Apply custom styling styledQr.ChangeBarCodeColor(System.Drawing.Color.DarkBlue) .SetMargins(10) .AddAnnotationTextAboveBarcode("Scan for Details"); // Export with various options styledQr.SaveAsPng("styled_high_correction.png"); styledQr.SaveAsJpeg("styled_high_correction.jpg"); styledQr.SaveAsPdf("styled_high_correction.pdf"); ```

为什么纠错会影响二维码的复杂性? 纠错的工作原理是使用里德-所罗门纠错算法在 QR 代码中添加冗余数据。 这种冗余可以让 QR 码阅读器重建数据中缺失或损坏的部分。 添加的纠错功能越多,编码相同信息所需的模块(黑白方格)就越多,从而形成更密集、更复杂的图案。 这种复杂性对[条码读取设置](https://ironsoftware.com/csharp/barcode/examples/barcode-reader-settings-csharp/)和扫描性能有实际影响。 较高的纠错级别可能需要调整阅读器设置以获得最佳性能。

有哪些不同的纠错级别? 以下是一组QR码图像示例,每个图像代表相同的值,但具有不同的错误校正级别。 如所观察到的,较高的错误校正级别导致更复杂的QR码图像,提供更大的容错能力。
QR code with highest error correction level showing dense pattern of black and white squares
QR code demonstrating high error correction level with dense data patterns and robust finder patterns
QR code with medium error correction level showing clear data pattern and finder squares
QR code with low error correction level showing standard black and white matrix pattern

何时应该使用高级纠错? 建议在几种情况下采用更高的纠错级别: 1.**行业应用**:在暴露于恶劣条件下的产品或设备上使用 QR 代码时 2.**户外标识**:适用于在户外展示的 QR 代码,易受天气影响 3.**长期存储**:需要多年保持可扫描性的文件或产品 4.**营销材料**:在使用徽标或设计时,应部分遮盖 QR 代码 对于涉及[读取多个条形码](https://ironsoftware.com/csharp/barcode/how-to/read-multiple-barcodes/)或处理损坏图像的高级场景,更高的纠错能力可提供额外的可靠性。

纠错如何影响二维码大小? 纠错直接影响二维码的物理尺寸和数据容量。 较高的纠错级别需要更多的模块来对相同数量的数据进行编码,这可能导致以下结果 - 相同数据内容的更大二维码 - 在给定 QR 码大小的情况下减少最大数据容量 - 较复杂的模式,在小尺寸下可能较难扫描 - 生成和扫描的处理时间增加

校正级别之间的视觉差异是什么? 在比较编码相同数据的 QR 代码时,纠错级别之间的视觉差异会很明显。 较低的修正级别会产生模块较少的简单模式,而较高的修正级别则会产生更密集、更复杂的模式。 这些差异不仅会影响外观,还会影响打印和显示时的实际考虑因素。 如需了解更多高级条形码生成技术,请浏览我们的 [ 综合文档](https://ironsoftware.com/csharp/barcode/docs/),并了解如何将纠错与其他条形码功能集成,以便在您的 .NET 应用程序中获得最佳效果。

常见问题解答

什么是 BarCode 技术中的纠错?

条形码中的纠错是指尽管存在视觉缺陷或编码错误,仍能保持条形码可读性的能力。IronBarcode 通过 QrErrorCorrectionLevel 参数实现纠错,根据所选级别,可恢复 7-30% 的损坏数据。

在 C# 中创建二维码时,如何设置纠错级别?

您可以使用 IronBarcode 的 QRCodeWriter.CreateQrCode 方法,通过指定 QrErrorCorrectionLevel 参数来设置纠错级别。该方法接受内容、大小和四种纠错级别(L、M、Q、H)中的一种。

二维码有哪四种纠错级别?

IronBarcode 支持 QR 码的四种预设纠错级别:L(低--7% 恢复)、M(中--15% 恢复)、Q(四分位--25% 恢复)和 H(高--30% 恢复)。级别越高,QR 码越复杂,但抗损能力越强。

哪些条形码类型支持纠错设置?

目前,IronBarcode 支持为 QR 码、Micro QR 和 rMQR 设置纠错级别。与传统的一维条形码相比,这些二维条形码格式具有更出色的纠错能力。

为什么二维条形码的纠错效果比一维条形码好?

IronBarcode 支持的二维条形码具有更高的数据容量(水平和垂直编码),因此具有更好的纠错能力,内置冗余允许从完整的部分提取数据,形状紧凑适合有限的空间,以及从不同角度扫描的灵活性。

何时应使用较高的纠错级别?

在处理不完美的印刷条件、潜在的物理损坏(划痕、污点)、具有挑战性的扫描环境或需要长期耐用性时,使用 IronBarcode 时应使用较高的纠错级别。较高的纠错级别可提供更可靠的扫描,但会增加 QR 码的复杂性。

Hairil Hasyimi Bin Omar
软件工程师
如所有伟大的工程师一般,Hairil 是个热心的学习者。他正在提高对 C#、Python 和 Java 的知识,并利用这些知识为 Iron Software 团队成员增值。Hairil 从马来西亚的玛拉工业大学加入 Iron Software 团队,获得化学与工艺工程学士学位。
准备开始了吗?
Nuget 下载 2,002,059 | 版本: 2025.12 刚刚发布