如何使用NuGet套件在C#中生成QR程式碼
在.NET應用程式中生成QR碼從未如此簡單。 使用適當的NuGet套件,您可以建立QR碼,自定義其外觀,並將其儲存為多種輸出格式,僅需幾行程式碼。 IronQR提供企業級的QR碼生成,支援.NET Core、.NET Framework和.NET 5-10的跨平台支援。
本教程演示如何安裝IronQR NuGet套件並立即開始生成QR碼。 無論您是在構建庫存系統、活動票務平台還是行銷應用程式,IronQR提供專業QR碼實現所需的工具。
如何安裝QR碼NuGet套件?
通過NuGet套件管理器安裝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類用合理的預設值來處理QR碼的生成,這對於大多數使用情況都非常有效:
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碼輸出

QrCode物件。 AnyBitmap,支援編碼成多種圖像格式或導出XAML路徑的矢量資料。 這種方法在Windows、macOS和Linux上都能正常工作,無需平台特定的依賴關係——不像那些自.NET 6開始只能在Windows上使用依賴System.Drawing的程式庫。
上述三行模式涵蓋了最常見的情況:編碼字串、獲得位圖、寫入文件。對於生產環境,您可能會傳遞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(QrErrorCorrectionLevel.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(QrErrorCorrectionLevel.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(QrErrorCorrectionLevel.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")
輸出

較高的錯誤更正級別建立出更密集的QR符號,擁有更多的原始模塊,使即使部分被遮擋或損壞的情況下,碼仍然可以被讀取。 對於將印刷在包裝或嵌入標誌中的碼,選擇等級 H最合適。對於僅數位顯示的情況,損壞不是問題,等級 M在資料容量和可靠性之間取得平衡。
選擇錯誤的級別是生產中掃描失敗的常見原因。 如果您的QR碼將出現在實物材料上或距離相機不同的距離,請使用等級 Q或H並在部署前用多種掃描器應用程式驗證輸出。
如何自訂QR碼外觀?
IronQR透過QrStyleOptions提供廣泛的樣式選項,支援自訂顏色、尺寸、邊距和嵌入標誌。 品牌化的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屬性控制沈默區——包圍QR符號的白色邊框,掃描器用來定位程式碼邊界。 將邊距減少到推薦的最低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碼輸出格式

ExportBytes()方法在網頁應用中特別有用,因為您可以直接通過HTTP返回QR碼圖像,而無需寫入磁碟。 您可以將字節陣列直接寫入響應流,或儲存在資料庫欄中以供按需檢索。
為了在PDF文件中嵌入QR碼,IronQR提供StampToExistingPdfPage方法,允許在現有文件上直接放置QR碼。 這可以本地使用,無需額外的PDF程式庫,這在微服務環境中很重要,因為您希望將依賴項數量最小化。
如何將IronQR NuGet套件與QRCoder比較?
QRCoder程式庫是.NET中生成QR碼的流行開源選擇。 使用過QRCoder的開發人員熟悉其多步驟API,涉及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碼——用於使用者帳戶連結、一次性登錄碼或付款請求。 以下範例展示了如何從ASP.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特定的指南也可在Blazor QR碼生成器教程中找到。
如何為QR碼影像新增邊距和調整大小?
控制尺寸和沈默區域對於印刷質量輸出至關重要。 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碼影像指南涵蓋了從授權啟動到文件輸出的完整影像建立工作流。
For specific QR code use cases -- including generating QR codes for business cards, building a dynamic QR code generator, and reading QR codes from images -- the dedicated articles cover each scenario with full code examples.
您的下一步是什麼?
IronQR將QR碼生成從多步驟過程轉化為簡單的NuGet整合。 您安裝套件,調用QrWriter.Write(),保存結果——這三個操作涵蓋了大多數現實情境。 同一程式庫中提供了錯誤更正級別、自訂樣式、PDF印章和基於ML的閱讀功能。
IronQR文件提供完整的API參考資料,包括先進主題如使用掃描模式讀取QR碼,批處理和平台特定的部署注意事項。 IronQR教程部分包括.NET MAUI、VB.NET和控制台應用程式的逐步指南。
常見問題
您如何安裝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。
您如何在C#中使用IronQR生成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在.NET中如何比較?
IronQR提供.NET 5-10的跨平台渲染(QRCoder的位圖渲染僅限Windows)、內建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")回應。無需臨時檔案。



