如何使用NuGet套件在C#中生成QR代碼
在 .NET 應用程式中產生 QR 碼從未如此簡單直接。 只要選用合適的 NuGet 套件,您就能僅用幾行程式碼,即可建立 QR 碼、自訂其外觀,並將其儲存為多種輸出格式。 IronQR 提供 Enterprise 級 QR 碼生成功能,並支援 .NET Core、.NET Framework 以及 .NET 5-10 的跨平台環境。
本教學將示範如何安裝 IronQR NuGet 套件,並立即開始產生 QR 碼。 無論您正在建置庫存系統、活動票務平台,還是行銷應用程式,IronQR 都能提供 Professional QR 碼實作所需的工具。
!{--01001100010010010100001001010010010000010101001001011001010111110100011101000101010101 01000101111101010011010101000100000101010010010101000100010101000100010111110101011101001000110 1010101000100100001011111010100000101001001001111010001000101010101010000110101010100101010101011 10101010001010010010010010010000010100110001011111010000100100110001001111101000011010010111111010000110100101110--
如何安裝 QR Code NuGet 套件?
透過 NuGet Package Manager 安裝 IronQR 只需要幾秒鐘。 在 Visual Studio 中開啟 NuGet 套件管理器控制台並執行以下命令,或在 CLI 環境中使用 dotnet add package 命令:
Install-Package IronQR
NuGet 套件會自動處理所有相依性,確保與您的目標框架相容。 IronQR 支援 .NET Framework 4.6.2 以上、.NET Core 2.0 以上,以及 .NET 5-10,使其成為適用於任何 Visual Studio 專案的多功能程式庫。
在編寫任何程式碼之前,您需要一個免費試用授權金鑰。 請在應用程式啟動初期設定此功能,以便後續所有呼叫皆經過驗證:
using IronQr;
// Set license key before any IronQR operation
IronQr.License.LicenseKey = "YOUR-LICENSE-KEY-HERE";
using IronQr;
// Set license key before any IronQR operation
IronQr.License.LicenseKey = "YOUR-LICENSE-KEY-HERE";
Imports IronQr
' Set license key before any IronQR operation
IronQr.License.LicenseKey = "YOUR-LICENSE-KEY-HERE"
安裝授權金鑰後,您的應用程式即可生成、讀取並自訂 QR 碼,且輸出圖像上不會出現浮水印。
如何生成您的第一個 QR 碼?
建立您的第一個 QR 碼只需極少的程式碼。 QrWriter 類別處理二維碼生成,其預設值合理,適用於大多數使用情境:
using IronQr;
using IronSoftware.Drawing;
// Generate a QR code from text data
QrCode myQr = QrWriter.Write("Hello World");
// Save QR code as bitmap image
AnyBitmap qrImage = myQr.Save();
// Export to PNG file
qrImage.SaveAs("hello-qr.png");
using IronQr;
using IronSoftware.Drawing;
// Generate a QR code from text data
QrCode myQr = QrWriter.Write("Hello World");
// Save QR code as bitmap image
AnyBitmap qrImage = myQr.Save();
// Export to PNG file
qrImage.SaveAs("hello-qr.png");
Imports IronQr
Imports IronSoftware.Drawing
' Generate a QR code from text data
Dim myQr As QrCode = QrWriter.Write("Hello World")
' Save QR code as bitmap image
Dim qrImage As AnyBitmap = myQr.Save()
' Export to PNG file
qrImage.SaveAs("hello-qr.png")
QR 程式碼輸出
!a href="/static-assets/qr/blog/nuget-qr-code/nuget-qr-code-1.webp">NuGet QR Code Generator:只需幾行代碼即可在 C# 中生成 QR 碼:圖片 1 - 簡單 QR 輸出
QrWriter.Write() 方法接受字串數據,並傳回一個包含 QR 符號的 QrCode 物件。 Save() 方法將其轉換為 AnyBitmap,支援編碼為各種影像格式或匯出向量資料以用於 XAML 路徑。 這種方法適用於 Windows、macOS 和 Linux,沒有特定於平台的依賴項——這與依賴 System.Drawing 的程式庫不同,後者從 .NET 6 開始僅適用於 Windows。
上述三行程式碼範例涵蓋了最常見的應用情境:編碼字串、取得位圖、寫入檔案。在實際生產環境中,您通常會傳遞 URL 字串、產品識別碼或 JSON 資料,而非純文字。
如何選擇合適的錯誤修正等級?
QR 碼支援 ISO/IEC 18004 QR 碼標準中定義的四種錯誤校正等級,這些等級決定了條碼在遭受多少損壞後仍可被掃描。 IronQR 透過 QrOptions 類別支援所有四個層級:
| 難度等級 | 恢復能力 | 最適合 |
|---|---|---|
| L (低) | 約7% | 整潔的環境,極致的数据密度 |
| M (中等) | 約15% | 一般用途(預設) |
| Q(四分位數) | 約25% | 工業應用 |
| H (高) | 約30% | 標誌、戶外標識、局部遮蔽 |
using IronQr;
using IronSoftware.Drawing;
// Configure high error correction level
var options = new QrOptions(QrErrorCorrection難度等級.High);
// Generate QR code with options
QrCode qr = QrWriter.Write("https://ironsoftware.com/csharp/qr/", options);
AnyBitmap image = qr.Save();
image.SaveAs("high-correction-qr.png");
using IronQr;
using IronSoftware.Drawing;
// Configure high error correction level
var options = new QrOptions(QrErrorCorrection難度等級.High);
// Generate QR code with options
QrCode qr = QrWriter.Write("https://ironsoftware.com/csharp/qr/", options);
AnyBitmap image = qr.Save();
image.SaveAs("high-correction-qr.png");
Imports IronQr
Imports IronSoftware.Drawing
' Configure high error correction level
Dim options As New QrOptions(QrErrorCorrection難度等級.High)
' Generate QR code with options
Dim qr As QrCode = QrWriter.Write("https://ironsoftware.com/csharp/qr/", options)
Dim image As AnyBitmap = qr.Save()
image.SaveAs("high-correction-qr.png")
輸出
!a href="/static-assets/qr/blog/nuget-qr-code/nuget-qr-code-2.webp">NuGet QR Code Generator:僅需幾行程式碼即可在 C# 中產生 QR 碼:圖片 2 - 具有高修正等級的 QR
較高的錯誤修正等級可創造出更密集的 QR 符號與更多的原始模組,使代碼即使在部分模糊或損壞的情況下仍能保持可讀性。 若需將代碼印製於包裝上或嵌入標誌中,H 級是最佳選擇。若僅用於數位顯示且無損壞之虞,M 級則能在資料容量與可靠性之間取得平衡。
選擇錯誤的層級是生產環境中掃描失敗的常見原因。 若您的 QR 碼將出現在實體材料上,或與相機的距離不一,請使用 Q 級或 H 級,並在部署前使用多種掃描應用程式驗證輸出結果。
如何自訂 QR 碼的外觀?
IronQR 透過 QrStyleOptions 提供豐富的樣式選項,支援自訂顏色、尺寸、邊距和標誌嵌入。 品牌化 QR 碼在行銷情境中表現更佳,因為它們能將 QR 碼與已知的品牌形象在視覺上建立連結:
using IronQr;
using IronSoftware.Drawing;
// Create styled QR code with custom colors
var styleOptions = new QrStyleOptions
{
Dimensions = 300, // Width and height in pixels
Margins = 10, // Quiet zone in pixels
Color = Color.DarkBlue,
BackgroundColor = Color.White
};
QrCode qr = QrWriter.Write("https://ironsoftware.com/csharp/qr/");
AnyBitmap styledImage = qr.Save(styleOptions);
styledImage.SaveAs("styled-qr.png");
using IronQr;
using IronSoftware.Drawing;
// Create styled QR code with custom colors
var styleOptions = new QrStyleOptions
{
Dimensions = 300, // Width and height in pixels
Margins = 10, // Quiet zone in pixels
Color = Color.DarkBlue,
BackgroundColor = Color.White
};
QrCode qr = QrWriter.Write("https://ironsoftware.com/csharp/qr/");
AnyBitmap styledImage = qr.Save(styleOptions);
styledImage.SaveAs("styled-qr.png");
Imports IronQr
Imports IronSoftware.Drawing
' Create styled QR code with custom colors
Dim styleOptions As New QrStyleOptions With {
.Dimensions = 300, ' Width and height in pixels
.Margins = 10, ' Quiet zone in pixels
.Color = Color.DarkBlue,
.BackgroundColor = Color.White
}
Dim qr As QrCode = QrWriter.Write("https://ironsoftware.com/csharp/qr/")
Dim styledImage As AnyBitmap = qr.Save(styleOptions)
styledImage.SaveAs("styled-qr.png")
有風格的 QR 輸出

Dimensions 屬性以像素為單位設定寬度和高度。 Margins 屬性控制靜默區-掃描器用來定位代碼邊界的圍繞二維碼符號的白色邊框。 若將邊距縮減至低於建議的 4 模組最小值,可能會導致舊款裝置掃描失敗。
在 QR 代碼中加入標誌可提高品牌辨識度。 其樣式系統能自動定位標誌,同時保持內容易讀性——這相較於需要手動計算定位的開源替代方案,是一項顯著優勢。
如何將 QR 碼儲存為不同的輸出格式?
IronQR 支援多種輸出格式,包括 PNG、JPEG、GIF、TIFF、BMP 和 SVG。 SaveAs 方法會自動根據檔案副檔名偵測檔案格式:
using IronQr;
using IronSoftware.Drawing;
QrCode qr = QrWriter.Write("Format demonstration");
AnyBitmap image = qr.Save();
// Save to raster image formats
image.SaveAs("qr-output.png");
image.SaveAs("qr-output.jpg");
image.SaveAs("qr-output.gif");
// Get as byte array for HTTP responses or database storage
byte[] pngBytes = image.ExportBytes();
using IronQr;
using IronSoftware.Drawing;
QrCode qr = QrWriter.Write("Format demonstration");
AnyBitmap image = qr.Save();
// Save to raster image formats
image.SaveAs("qr-output.png");
image.SaveAs("qr-output.jpg");
image.SaveAs("qr-output.gif");
// Get as byte array for HTTP responses or database storage
byte[] pngBytes = image.ExportBytes();
Imports IronQr
Imports IronSoftware.Drawing
Dim qr As QrCode = QrWriter.Write("Format demonstration")
Dim image As AnyBitmap = qr.Save()
' Save to raster image formats
image.SaveAs("qr-output.png")
image.SaveAs("qr-output.jpg")
image.SaveAs("qr-output.gif")
' Get as byte array for HTTP responses or database storage
Dim pngBytes As Byte() = image.ExportBytes()
多種 QR 碼輸出格式
!a href="/static-assets/qr/blog/nuget-qr-code/nuget-qr-code-4.webp">NuGet QR Code Generator:只需幾行代碼即可在 C# 中生成 QR 碼:圖片 4 - 以不同檔案格式儲存的 QR 碼。
ExportBytes() 方法在 Web 應用程式中特別有用,它允許您透過 HTTP 返回二維碼映像而不寫入磁碟。 您可以將位元組陣列直接寫入回應串流,或儲存至資料庫欄位以便按需擷取。
IronQR 提供 StampToExistingPdfPage 方法,用於在 PDF 文件中嵌入二維碼,從而可以直接在現有文件上放置二維碼。 此功能可原生運作,無需額外 PDF 函式庫,這在微服務環境中至關重要,因為您希望盡量減少依賴項的數量。
IronQR NuGet 套件與 QRCoder 有何不同?
QRCoder 函式庫是 .NET 環境中廣受歡迎的 QR 碼生成開源選項。 使用過 QRCoder 的開發者都熟悉它的多步驟 API,其中涉及 QRCodeGenerator、QRCodeData 以及單獨的渲染類,例如 PngByteQRCode。 IronQR 將其簡化為單一 QrWriter.Write() 呼叫。
| 特點 | IronQR | QRCoder |
|---|---|---|
| 跨平台渲染 | 全面支援 .NET 5 至 10 版本 | 僅限 Windows 系統進行位圖渲染 |
| 由機器學習驅動的閱讀 | 99.9% 準確度檢測 | 僅限生成,不進行閱讀 |
| PDF 整合 | 原生印章支援 | 需要其他庫 |
| 商業支援 | 24/5 工程支援 | 僅限社群 |
| 標誌嵌入 | 內建、自動定位 | 需手動覆蓋 |
QRCoder 在 Windows 環境中用於基本生成作業表現良好。 IronQR 的機器學習模型能從任何角度提供卓越的 QR 碼讀取能力——這對於處理使用者提交的圖片、且無法控制輸入畫質的應用程式而言至關重要。 單方法 API 亦能減少實現可運作功能所需的程式碼行數。
若您的團隊正從 QRCoder 遷移,請參閱《QRCoder 至 IronQR 遷移指南》,其中提供 API 的並列對照表。
如何將二進位資料編碼至 QR 碼中?
除了文字之外,IronQR 還支援對位元組陣列進行編碼,以產生二進位 QR 碼載荷。 這對於無法以 UTF-8 字串表示的加密代幣、序列化物件或原始二進位識別碼非常有用:
using IronQr;
using IronSoftware.Drawing;
// Encode binary data -- useful for encrypted payloads or binary identifiers
byte[] binaryData = System.Text.Encoding.UTF8.GetBytes("Binary content example");
QrCode qr = QrWriter.Write(binaryData);
qr.Save().SaveAs("binary-qr.png");
using IronQr;
using IronSoftware.Drawing;
// Encode binary data -- useful for encrypted payloads or binary identifiers
byte[] binaryData = System.Text.Encoding.UTF8.GetBytes("Binary content example");
QrCode qr = QrWriter.Write(binaryData);
qr.Save().SaveAs("binary-qr.png");
Imports IronQr
Imports IronSoftware.Drawing
' Encode binary data -- useful for encrypted payloads or binary identifiers
Dim binaryData As Byte() = System.Text.Encoding.UTF8.GetBytes("Binary content example")
Dim qr As QrCode = QrWriter.Write(binaryData)
qr.Save().SaveAs("binary-qr.png")
輸出
。
二進位編碼讓您能夠在 QR 碼中包含加密載荷、序列化物件或任何二進位內容。 接收端的掃描器必須懂得如何解讀二進位資料——這在存取控制系統中很常見,因為 QR 碼通常包含的是簽名憑證,而非人類可讀的 URL。
請注意,二進位資料產生的 QR 碼符號比等量的文字資料更為密集。 若有效載荷大小會影響遠距離掃描的可靠性,請採用 H 級錯誤校正,並使用預期使用者可能擁有的最小型相機進行測試。
如何在 C# 中讀取 QR 碼?
IronQR 同時支援讀寫功能。 QrReader 類別接受影像檔案、點陣圖和相機幀,使其既適用於批次處理也適用於即時掃描場景:
using IronQr;
using IronSoftware.Drawing;
// Load an existing image containing a QR code
var inputImage = AnyBitmap.FromFile("qr-to-read.png");
// Read all QR codes in the image
QrReadResult readResult = QrReader.Read(inputImage);
foreach (QrResult result in readResult.QrCodes)
{
// Access the decoded value
Console.WriteLine($"Decoded: {result.Value}");
}
using IronQr;
using IronSoftware.Drawing;
// Load an existing image containing a QR code
var inputImage = AnyBitmap.FromFile("qr-to-read.png");
// Read all QR codes in the image
QrReadResult readResult = QrReader.Read(inputImage);
foreach (QrResult result in readResult.QrCodes)
{
// Access the decoded value
Console.WriteLine($"Decoded: {result.Value}");
}
Imports IronQr
Imports IronSoftware.Drawing
' Load an existing image containing a QR code
Dim inputImage = AnyBitmap.FromFile("qr-to-read.png")
' Read all QR codes in the image
Dim readResult As QrReadResult = QrReader.Read(inputImage)
For Each result As QrResult In readResult.QrCodes
' Access the decoded value
Console.WriteLine($"Decoded: {result.Value}")
Next
這款由機器學習驅動的讀取引擎可處理任何方向的圖像,並能處理在錯誤修正閾值範圍內的局部損壞。 針對實際應用情境,請參閱 QR 碼讀取教學,以了解如何處理低畫質輸入、多碼圖像及掃描模式設定。
如何在 ASP.NET Core 應用程式中使用 IronQR?
網頁應用程式經常需要按需生成 QR 碼——例如用於使用者帳戶連結、一次性登入碼或付款請求。 以下範例展示如何直接從 .NET Core 極簡 API 端點提供 QR 碼圖片:
using IronQr;
using IronSoftware.Drawing;
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
// Set license key at application startup
IronQr.License.LicenseKey = "YOUR-LICENSE-KEY-HERE";
// Return a QR code PNG for a given URL parameter
app.MapGet("/qr", (string data) =>
{
QrCode qr = QrWriter.Write(data);
AnyBitmap image = qr.Save();
byte[] pngBytes = image.ExportBytes();
return Results.File(pngBytes, "image/png");
});
app.Run();
using IronQr;
using IronSoftware.Drawing;
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
// Set license key at application startup
IronQr.License.LicenseKey = "YOUR-LICENSE-KEY-HERE";
// Return a QR code PNG for a given URL parameter
app.MapGet("/qr", (string data) =>
{
QrCode qr = QrWriter.Write(data);
AnyBitmap image = qr.Save();
byte[] pngBytes = image.ExportBytes();
return Results.File(pngBytes, "image/png");
});
app.Run();
Imports IronQr
Imports IronSoftware.Drawing
Dim builder = WebApplication.CreateBuilder(args)
Dim app = builder.Build()
' Set license key at application startup
IronQr.License.LicenseKey = "YOUR-LICENSE-KEY-HERE"
' Return a QR code PNG for a given URL parameter
app.MapGet("/qr", Function(data As String)
Dim qr As QrCode = QrWriter.Write(data)
Dim image As AnyBitmap = qr.Save()
Dim pngBytes As Byte() = image.ExportBytes()
Return Results.File(pngBytes, "image/png")
End Function)
app.Run()
這種模式既適用於 ASP.NET Core 的極簡 API,也適用於標準的 MVC 控制器。 ExportBytes() 呼叫避免了將臨時檔案寫入磁碟,這在檔案系統可能是唯讀或臨時的容器化部署中非常重要。
如需完整的 ASP.NET Core 整合實作指南,請參閱 ASP.NET Core QR 碼產生器教學。 此外,您還可在 Blazor QR 碼產生器教學中找到專門針對 Blazor 的指南。
如何為 QR 碼圖片添加邊距並調整大小?
控制尺寸與安全邊距對於確保PRINT輸出品質至關重要。 IronQR 透過 QrStyleOptions 公開了這兩種方式,並且有專門的操作指南詳細介紹了每種方式:
using IronQr;
using IronSoftware.Drawing;
// Specify dimensions and quiet zone for print output
var printOptions = new QrStyleOptions
{
Dimensions = 600, // High resolution for print
Margins = 20 // Generous quiet zone for reliable scanning
};
QrCode qr = QrWriter.Write("https://ironsoftware.com/csharp/qr/");
AnyBitmap printImage = qr.Save(printOptions);
printImage.SaveAs("print-ready-qr.png");
using IronQr;
using IronSoftware.Drawing;
// Specify dimensions and quiet zone for print output
var printOptions = new QrStyleOptions
{
Dimensions = 600, // High resolution for print
Margins = 20 // Generous quiet zone for reliable scanning
};
QrCode qr = QrWriter.Write("https://ironsoftware.com/csharp/qr/");
AnyBitmap printImage = qr.Save(printOptions);
printImage.SaveAs("print-ready-qr.png");
Imports IronQr
Imports IronSoftware.Drawing
' Specify dimensions and quiet zone for print output
Dim printOptions As New QrStyleOptions With {
.Dimensions = 600, ' High resolution for print
.Margins = 20 ' Generous quiet zone for reliable scanning
}
Dim qr As QrCode = QrWriter.Write("https://ironsoftware.com/csharp/qr/")
Dim printImage As AnyBitmap = qr.Save(printOptions)
printImage.SaveAs("print-ready-qr.png")
有關不同輸出媒體的尺寸與邊距要求的完整指引,請參閱關於調整 QR 碼圖像大小及為 QR 碼添加邊距的操作指南文章。 《QR 碼圖像建立指南》涵蓋了從授權啟用到檔案輸出的完整圖像建立工作流程。
針對特定的 QR 碼應用情境——包括為名片生成 QR 碼、建立動態 QR 碼生成器,以及從圖片中讀取 QR 碼——相關專文均附有完整的程式碼範例,詳盡說明每種情境。
下一步計劃是什麼?
IronQR 將 QR 碼生成從多步驟流程轉變為直觀的 NuGet 整合。 安裝軟體包,呼叫 QrWriter.Write(),然後儲存結果-這三個操作涵蓋了大多數現實世界的場景。 透過同一個函式庫,即可使用錯誤修正等級、自訂樣式、PDF 加蓋水印以及基於機器學習的閱讀功能。
IronQR 文件提供完整的 API 參考,包含進階主題,例如透過掃描模式讀取 QR 碼、批次處理,以及特定平台的部署注意事項。 IronQR 的教學區塊包含針對 .NET MAUI、VB.NET 及主控台應用程式的逐步操作指南。
立即開始免費試用,無限制地探索完整功能集;或購買授權以進行生產環境部署,並享有每週 5 天、每天 24 小時的工程技術支援。
常見問題解答
如何安裝IronQR NuGet包?
在終端運行dotnet add package IronQR,或在Visual Studio中打開NuGet Package Manager Console並運行Install-Package IronQR。該包支持.NET Framework 4.6.2+、.NET Core 2.0+,以及.NET 5-10。
如何使用IronQR在C#中生成QR代碼?
調用QrWriter.Write("your-data")以創建一個QrCode對象,然後調用.Save()以獲得AnyBitmap,最後調用.SaveAs("output.png")來寫文件。
IronQR支持哪些QR代碼的輸出格式?
IronQR支持PNG、JPEG、GIF、TIFF、BMP和SVG。SaveAs方法自動從文件擴展名檢測格式。使用ExportBytes()獲取HTTP響應或數據庫存儲的字節數組。
如何使用IronQR自訂QR代碼的顏色和大小?
創建一個QrStyleOptions對象並設置Dimensions(像素)、Margins(靜區像素)、Color和BackgroundColor。將此傳遞給qr.Save(styleOptions)。
IronQR支持哪些錯誤更正級別?
IronQR通過QrErrorCorrectionLevel支持所有四個ISO/IEC 18004級別:L(約7%恢復)、M(約15%,默認)、Q(約25%)和H(約30%)。在QrOptions對象中傳遞等級給QrWriter.Write()。
IronQR與QRCoder for .NET相比如何?
IronQR在.NET 5-10上提供跨平台渲染(QRCoder僅限Window的bitmap渲染功能)、內置的ML驅動閱讀(QRCoder僅生成)、原生PDF標記和單一方法API。QRCoder是一個免費開源選擇,適用於簡單的Windows基於生成。
IronQR可用來讀取圖片中的QR代碼嗎?
是。使用QrReader.Read(AnyBitmap.FromFile("path"))掃描圖片。ML驅動引擎處理任何方向和部分損壞的狀況。循環readResult.QrCodes訪問每個解碼的result.Value。
如何在ASP.NET Core應用中生成QR代碼?
在您的控制器或最小API處理函數中調用QrWriter.Write(data),然後調用image.ExportBytes()並將字節數組作為Results.File(pngBytes, "image/png")回應返回。不需要臨時文件。



