IRONSOFTWAREHOME
USING IRONQR

QR程式碼.NET Core:在C#中讀取和生成QR程式碼

Curtis Chau
Curtis Chau
Updated: 2026年4月21日

在 .NET Core 上建立網路或企業應用程式時,QR碼支援──用於庫存追蹤、支付流程或雙因素身份驗證──是一個常見需求。 與其花時間在低層次的編碼算法上,您可以使用專門的程式庫來處理完整的工作流程。 IronQR提供全面的QR碼解決方案,涵蓋從基本生成到機器學習驅動的讀取和高級錯誤更正等所有功能。

準備好自行試試了嗎? 今天開始您的免費試用,看看您能多快速地為您的專案增加 QR 功能。

NuGet使用NuGet安裝

PM > Install-Package IronQR

Install IronQR by running the command above in the NuGet Package Manager Console, or search for the package in the NuGet Package Manager.

如何安裝QR碼程式庫?

通過NuGet安裝IronQR只需幾秒鐘。 打開 Visual Studio,轉到工具 > NuGet套件管理器 > 為解決方案管理NuGet套件,搜尋IronQR,然後點擊安裝。 此套件具有最小的相依性,並且開箱即用支援Windows、macOS和Linux。

PM > Install-Package IronQR

IronQR支援.NET Core 6、7、8、9 和 10,以及 .NET Framework 4.6.2及更高版本。 對於跨平台專案,SkiaSharp整合處理非Windows執行時的影像處理。 該程式庫可與ASP.NET Core網頁應用程式、控制台應用程式和桌面解決方案一起使用,無需額外的執行時配置。 安裝後,所有必要的擴充方法和型別立即可用。

如何從影像中讀取基本QR碼?

從影像檔中讀取QR碼資料僅需幾行程式碼。 QrReader類別使用一個先進的機器學習模型,該模型自動評估影像質量並選擇合適的段模式,即使輸入影像不理想,也能提供準確的結果。

using IronQr;
using IronSoftware.Drawing;

// Load image containing QR code
var inputBmp = AnyBitmap.FromFile("qr-sample.png");
// Create QrImageInput from the bitmap
QrImageInput imageInput = new QrImageInput(inputBmp);
// Initialize QR Reader with ML model
QrReader reader = new QrReader();
// Read and decode all QR codes in the image
IEnumerable<QrResult> results = reader.Read(imageInput);
// Output decoded text strings
foreach (var qrCode in results)
{
    Console.WriteLine($"QR Code Value: {qrCode.Value}");
    Console.WriteLine($"URL: {qrCode.Url}");
}

輸入QR Code

QR Code Generator .NET Core: Read and Generate QR Codes with Just a Few Lines of Code: Image 1 - Input QR Code

輸出

QR Code Generator .NET Core: Read and Generate QR Codes with Just a Few Lines of Code: Image 2 - Example QR Code scan output

IEnumerable<QrResult>,每個結果都包含解碼文字、若有編碼的URL,以及影像中QR符號的空間位置。 該程式庫接受字節陣列、檔案路徑和AnyBitmap物件,使您在專案架構中有靈活性──無論您是從硬碟、資料庫還是動態攝影機鏡頭讀取。

支撐此讀取器的ML模型讓IronQR與純算法程式庫區分開來。 它能處理實際中的不完美狀況,如運動模糊、部分遮擋和不均勻的光線,無需手動預處理或門檻調整。

如何提取高級QR碼資料?

除了基本值解碼,IronQR會暴露每個掃描程式碼的座標、原始資料片段和模塊級別資訊。 這對於您需要確切知道某個QR碼在文件上出現位置的文件處理工作流程非常重要,或者對於必須處理一個影像中的多個程式碼的應用程式來說也極為必要。

using IronQr;
using IronSoftware.Drawing;

var inputBmp = AnyBitmap.FromFile("document-with-qr.png");
QrImageInput imageInput = new QrImageInput(inputBmp);
QrReader reader = new QrReader();
IEnumerable<QrResult> results = reader.Read(imageInput);
foreach (var qrCode in results)
{
    // Access decoded value
    Console.WriteLine($"Data: {qrCode.Value}");
    // Get corner coordinate positions
    foreach (PointF point in qrCode.Points)
    {
        Console.WriteLine($"Position: {point.X}, {point.Y}");
    }
}

輸入QR

QR Code Generator .NET Core: Read and Generate QR Codes with Just a Few Lines of Code: Image 3 - Input QR code

高級QR讀取結果

QR Code Generator .NET Core: Read and Generate QR Codes with Just a Few Lines of Code: Image 4 - Results for advanced QR data extraction

QrResult.Points集合包含在像素空間中檢測到的QR符號的四個角座標。 您的應用程式可以使用這些座標在文件影像上覆蓋邊界框、剪裁QR區域以進一步處理,或將位置資訊傳遞給下游系統以將物理座標映射到邏輯文件位置。

IronQR通過相同的ML管道處理包含自定義嵌入標誌、損壞的模塊或低解析度輸入的程式碼。程式庫不需要單獨的預處理步驟——檢測和解碼在單一Read()調用中完成。

錯誤更正級別如何影響QR碼質量?

錯誤更正是QR掃描器即使在部分程式碼被遮擋、印刷不良或物理損壞時也能恢復原始資料的機制。 QR碼標準定義了四個級別——低 (L)、中 (M)、準四型 (Q) 和高 (H)——每個級別以儲存容量來換取耐損特性。

級別恢復能力最佳用途
L~7%乾淨的數位顯示,最大資料密度
M~15%一般印刷應用
Q~25%工業標籤,預期中度磨損
H~30%嵌入標誌,戶外或高磨損表面

在生成QR碼時,指定更高的錯誤更正級別可以確保輸出在實際掃描條件下能夠良好運行:

using IronQr;
using IronSoftware.Drawing;

// Configure QR options with high error correction
var qrOptions = new QrOptions(QrErrorCorrectionLevel.High, 20);
// Generate a QR code with specified error correction
QrCode myQr = QrWriter.Write("https://ironsoftware.com", qrOptions);
// Save as PNG image
AnyBitmap qrImage = myQr.Save();
qrImage.SaveAs("high-error-correction-qr.png");

輸出

QR Code Generator .NET Core: Read and Generate QR Codes with Just a Few Lines of Code: Image 5 - Generated QR Code with high error correction level

QrOptions構造函式接受錯誤更正級別和最大版本號。 版本40的程式碼最多儲存7,089個數字字元,而版本1的程式碼僅容納41個。設置較低的最大版本可以限制輸出尺寸,這在您需要在一批中保持一致的物理尺寸時很有用。 錯誤更正級別越高,為冗餘保留的模組越多,因而在任何給定版本下可用的淨資料容量會減少。

IronQR的容錯功能與此屬性一起閱讀——在高級別錯誤更正下生成的程式碼時,程式庫能從純算法解碼器完全失敗的程式碼中恢復資料。

如何生成具有國際字元的QR碼?

IronQR支援完整範圍的QR編碼模式:數字、字母數字、字節和日文字。 對於日文文字和其他Unicode內容,程式庫會自動選擇最節省空間的編碼:

using IronQr;
using IronSoftware.Drawing;

// Generate QR that encodes Japanese Unicode text
QrCode japaneseQr = QrWriter.Write("こんにちは世界");
// The library selects Kanji mode automatically
AnyBitmap qrImage = japaneseQr.Save();
qrImage.SaveAs("japanese-qr.png");

QR碼輸出

QR Code Generator .NET Core: Read and Generate QR Codes with Just a Few Lines of Code: Image 6 - Output QR Code

日文字編碼每個模組存放兩個字節而不是八個位,因此同一版本的日文QR碼比UTF-8字節模式等效物儲存更多字元。 對於混合內容,例如一個URL後接日文字,IronQR切分輸入並以最優模式編碼每個段。 您不需要指定段邊界或手動調用編碼輔助器; 編碼管道為您處理這些。

此自動選擇還涵蓋了擴展頻道解釋(ECI)標記,這些標記用於向掃描器發出使用了非標準字元集的信號。 面向國際市場的應用可以將任何Unicode字串直接傳遞給QrWriter.Write(),無需單獨配置。

如何使用有效荷載發電器生成結構化QR資料?

一個QR碼編碼單一URL對於簡單的連結共享很有效,但許多應用程式需要編碼結構化資料——如WiFi憑證,以vCard格式的聯絡卡或事件資料。 手動格式化這些有效載荷容易出錯; 漏掉分號或錯誤的欄位順序會導致掃描器來誤解資料。

IronQR提供的有效載荷輔助器可以正確地生成這些結構化字串:

using IronQr;
using IronSoftware.Drawing;

// Generate QR code with URL payload
var urlQrCode = QrWriter.Write("https://ironsoftware.com/csharp/qr/");
// Save QR as PNG image file
AnyBitmap qrImage = urlQrCode.Save();
qrImage.SaveAs("url-qr-code.png");
Console.WriteLine("QR code generated successfully.");

已建立的QR碼

QR Code Generator .NET Core: Read and Generate QR Codes with Just a Few Lines of Code: Image 7 - QR Code created from an URL

QrWriter.Write()方法接受純字串或結構化有效載荷物件。 對於WiFi網路,該有效載荷按照Android和iOS掃描器認可的格式編碼SSID、密碼和安全型別。對於聯絡資訊,輸出遵循大多數移動QR讀取器使用的MeCard標準。 生成功能頁面記錄了所有支援的有效載荷型別及其所需欄位。

程式庫以可配置的像素尺寸輸出影像。 對於生產用途,生成至少200x200像素的程式碼可確保從典型智能手機距離可靠掃描。 更大尺寸可有利於戶外或印刷應用,用於超過一米的掃描距離。

如何自訂QR碼外觀?

IronQR讓您在不犧牲其可掃描性的情況下控制生成程式碼的視覺外觀。 您可以更改前景和背景顏色,應用自定義品牌或將標識嵌入到中心的安靜區域。

using IronQr;
using IronSoftware.Drawing;

// Define custom colors for the QR code
var darkColor = Color.FromArgb(30, 30, 120);   // Deep navy foreground
var lightColor = Color.White;

var options = new QrOptions(QrErrorCorrectionLevel.High, maxVersion: 20)
{
    BackgroundColor = lightColor,
    Color = darkColor,
    // Embed a logo image into the QR center
    Logo = AnyBitmap.FromFile("logo.png")
};

QrCode styledQr = QrWriter.Write("https://ironsoftware.com/csharp/qr/", options);
AnyBitmap output = styledQr.Save();
output.SaveAs("branded-qr.png");

嵌入標識減少了有效資料區域,因此程式庫要求當提供了標識時使用高(H)錯誤更正級別。 中心保留的安靜區域約佔程式碼表面30%,這在H級別的恢復能力之內。 程式庫自動強制執行此約束——如果您設置了低於標識可選擇的錯誤更正級別,IronQR會報錯並提供描述性訊息,而非生成掃描不可靠的程式碼。

對於ASP.NET Core應用程式,ASP.NET Core QR碼產生器教學展示了如何從控制器動作中將生成的QR碼作為影像響應提供。 輸出流直接寫入響應而無需中介文件I/O,這對於高流量端點保持延遲低非常重要。

如何在ASP.NET Core應用程式中讀取QR碼?

伺服器端掃描QR碼——從上傳的影像、文件處理管道或自動檢測系統——是閱讀API的一種常見用例。 ASP.NET QR碼掃描指南涵蓋了完整的控制器和服務設置,但核心閱讀模式與控制台應用程式相同:

using IronQr;
using IronSoftware.Drawing;
using Microsoft.AspNetCore.Mvc;

[ApiController]
[Route("api/qr")]
public class QrScanController : ControllerBase
{
    [HttpPost("scan")]
    public IActionResult Scan(IFormFile imageFile)
    {
        using var stream = imageFile.OpenReadStream();
        var bitmap = AnyBitmap.FromStream(stream);
        var imageInput = new QrImageInput(bitmap);
        var reader = new QrReader();
        var results = reader.Read(imageInput);

        var decoded = results.Select(r => new { r.Value, r.Url }).ToList();
        return Ok(decoded);
    }
}

AnyBitmap.FromStream()方法接受任何可讀取流,因此同一個程式碼路徑對通過表單上傳的文件、從blob儲存中提取的影像或從影片管道中提取的幀都有效。控制器不會向硬碟寫入任何臨時文件,這對於文件系統可能為只讀的容器化部署尤其重要。

對於高吞吐量的場景,在應用程式生命周期中僅需實例化QrReader一次作為單例,因為ML模型載入成本是在首次構建時支付的。 同一實例上的隨後Read()調用是安全且共享載入模型的。

如何在.NET MAUI應用程式中生成QR碼?

.NET MAUI QR碼教學展示了在iOS、Android、macOS和Windows上完整的跨平台生成。 IronQR在非Windows平台上執行時使用SkiaSharp渲染後台,為所有MAUI目標提供一致的輸出。

using IronQr;
using IronSoftware.Drawing;

// Generate QR and convert to a byte array for display in MAUI
QrCode qr = QrWriter.Write("https://ironsoftware.com/csharp/qr/");
AnyBitmap bitmap = qr.Save();
byte[] imageBytes = bitmap.ExportBytes();

// Bind imageBytes to an <Image Source> in your MAUI page

在移動裝置上ImageButton。 MAUI框架不需要平台特定的程式碼路徑——同一生成邏輯在所有四個MAUI目標上運行皆相同。

對於VB.NET專案,API介面是相同的; 只有語法不同。 該程式庫提供單一NuGet封裝,無需額外的VB.NET組件。

您的下一步是什麼?

IronQR涵蓋了.NET中的完整QR碼生命周期——從基本生成和結構化有效載荷編碼到損壞或品牌程式碼的機器學習驅動的讀取。 這個程式庫處理日文字編碼、錯誤更正配置和跨平台影像輸出,讓您專注於特定應用的邏輯。

要將您學到的知識付諸實踐:

Curtis Chau
技術作家

Curtis Chau擁有Carleton大學的電腦科學學士學位,專精於前端開發,擁有Node.js、TypeScript、JavaScript和React的專業知識。Curtis熱衷於建立直觀且美觀的使用者介面,喜愛使用現代框架並建立結構良好、視覺吸引力的手冊。

...
閱讀更多

相關文章

Key in blue circle

立即免費取得 30 天試用金鑰

Your trial license will be sent to your email address

無任何限制。100% 解鎖。無需信用卡。

bullet_checked無需信用卡或建立帳號無任何限制。100% 解鎖。無需信用卡。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
預約您的免費現場演示
Booking Badge

受到全球數百萬工程師的信賴

Iron Software的客戶標誌
獲取您的無義務諮詢
填寫以下表單或發送電子郵件至sales@ironsoftware.com
您的詳細資訊將始終保密。
受到全球數百萬工程師的信賴
Iron Software的客戶標誌
立即獲取您的30天試用金鑰
無需信用卡或帳戶建立