如何在 QR code 生成時設定錯誤校正等級
掌握效能主導權。 調整錯誤修正設定,以建立更快、更耐用的 QR 碼,使其即使受損仍能可靠地被掃描。
錯誤修正正是區分一個失效的 QR 碼與一個持續運作的 QR 碼的關鍵。 當印刷標籤被刮傷、貼紙剝落,或海報在陽光下褪色時,錯誤校正功能將決定條碼是否仍能被掃描。 IronQR 讓開發人員能精確選擇 QR 碼的耐用程度,從針對清晰數位顯示螢幕優化的輕量級碼,到專為倉庫及工廠環境設計的重型碼皆可。
本指南將示範如何使用 IronQR程式庫設定錯誤修正等級,針對任何使用情境在資料密度與損壞容忍度之間取得平衡。 初次接觸 QR 碼生成功能的開發者,建議先參閱《將 QR 碼產生為圖片》指南。
快速入門:設定 QR 碼錯誤校正
透過 QrOptions 設定錯誤修正等級,並產生具備容錯能力的 QR 碼。
最小工作流程(5 個步驟)
- 下載 IronQR C# 程式庫,以產生具備錯誤校正功能的 QR 碼
- 建立一個具有指定 `ErrorCorrectionLevel` 的 `QrOptions` 物件
- 請使用 `QrWriter.Write()` 並搭配上述選項來產生 QR 碼
- 使用 `Save()` 將 QR 碼儲存為位圖
- 使用 `SaveAs()` 將位圖匯出為圖像檔案
理解錯誤修正等級
QR 碼採用里德-所羅門(Reed-Solomon)錯誤校正技術,即使部分受損或被遮蔽,仍能保持可掃描性。 IronQR 中的 QrErrorCorrectionLevel 枚舉提供四種等級,每種等級皆以犧牲資料容量為代價,換取更高的抗干擾能力:
| 等級 | 復原能力 | 最適合 |
|---|---|---|
QrErrorCorrectionLevel.Low |
~7% 損耗 | 數位螢幕、受控環境 |
QrErrorCorrectionLevel.Medium |
~15% 損耗 | 通用用途,中等耐用度 |
QrErrorCorrectionLevel.High |
~25% 損耗 | 印刷品、戶外標誌 |
QrErrorCorrectionLevel.Highest |
~30% 損壞 | 工業標籤、嚴苛環境 |
較高的錯誤校正能力會增加更多冗餘模組,從而提高 QR 碼的視覺密度。 這也會影響生成的圖片大小,因此開發人員可能需要據此調整尺寸。 符合耐久性要求的最低層級,能讓程式碼保持精簡且易於掃描。
設定錯誤修正等級
若要設定錯誤修正等級,請將所需的 QrErrorCorrectionLevel 值傳遞給 QrOptions 建構函式。 接著在生成 QR 碼時,將這些選項傳遞給 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")
輸出
錯誤修正等級比較
每個等級都會產生視覺上不同的 QR 碼。 較低層級會產生更簡單的圖案,掃描速度較快;而較高層級則會形成更密集的圖案,能承受更大的損傷。 以下是各層級生成相同資料以供比較的方法:
: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% 恢復率)
根據使用情境選擇適當的技術層級
適當的錯誤修正程度取決於 QR 碼的應用場景及其必須滿足的需求:
| 使用案例 | 等級 | 為何 | 相關指南 |
|---|---|---|---|
| 數位顯示器與網站 | QrErrorCorrectionLevel.Low |
螢幕清晰,背光可調,無物理磨損。 保持程式碼簡潔且易於快速瀏覽。 | 將 QR 碼轉為圖片 |
| 名片、傳單及室內標示牌 | QrErrorCorrectionLevel.Medium |
輕微的磨損與摺痕不會影響掃描效果。 建議搭配適當的邊距以獲得最佳效果。 | 為 QR 碼添加邊距 |
| 產品包裝與戶外海報 | QrErrorCorrectionLevel.High |
材料在運輸過程中會面臨雨水、紫外線照射及粗暴搬運。 放大尺寸以利遠距掃描。 | 調整 QR 碼大小 |
| 倉儲標籤、工廠車間及工業標籤 | QrErrorCorrectionLevel.Highest |
在嚴苛環境中,代碼可能被刮傷、沾染污漬或部分遮蓋。 最大限度的冗餘確保其正常運作。 | 從圖片中讀取 QR 碼 |
若需更進階的 QR 碼生成模式,請參閱 C# QR 碼生成器教學指南,並探索 IronQR 的完整功能集。

