C# 最簡單產生 QRCode 示範

一如往常,筆者又在尋找今天作業(每日文章)的題目,把 NuGet 套件清單翻了十幾頁後看到了一個下載次數超過 1,800 萬的 QR Code 套件,發現還沒有寫過,於是就有了這篇。

安裝

先使用 NuGet 安裝 QRCoder 套件,或是使用 .NET CLI 執行以下指令安裝
	
dotnet add package QRCoder
    

基本程式碼

在 WinForms 專案中可以直接使用下面的程式碼就看到 QR Code
    
// 產生 QR Code
QRCodeGenerator qrGenerator = new ();
QRCodeData qrCodeData = qrGenerator.CreateQrCode("https://www.ruyut.com/", QRCodeGenerator.ECCLevel.L);
QRCode qrCode = new QRCode(qrCodeData);
Bitmap qrCodeImage = qrCode.GetGraphic(20);


// 顯示
PictureBox pictureBox = new PictureBox();
pictureBox.Image = qrCodeImage;
pictureBox.SizeMode = PictureBoxSizeMode.AutoSize;
this.Controls.Add(pictureBox);
    

其中 ECCLevel 代表容錯等級,分別為:
  • ECCLevel.L: 容許大約 7% 的損壞
  • ECCLevel.M: 容許大約 15% 的損壞
  • ECCLevel.Q: 容許大約 25% 的損壞
  • ECCLevel.H: 容許大約 30% 的損壞
容錯數越大則產生的 QR Code 會越複雜,比較如下:

變更顏色

可以變更 QRCode 前景和背景顏色:
    

QRCodeGenerator qrGenerator = new();
QRCodeData qrCodeData = qrGenerator.CreateQrCode("https://www.ruyut.com/", QRCodeGenerator.ECCLevel.L);
QRCode qrCode = new QRCode(qrCodeData);
Bitmap qrCodeImage = qrCode.GetGraphic(20, Color.FromArgb(255, 111, 0), Color.FromArgb(43, 43, 43), true);
    

範例輸出:

中心加上圖片

要加上圖片也是非常簡單:
    

QRCodeGenerator qrGenerator = new();
QRCodeData qrCodeData = qrGenerator.CreateQrCode("https://www.ruyut.com/", QRCodeGenerator.ECCLevel.L);
QRCode qrCode = new QRCode(qrCodeData);
Bitmap bitmap = Bitmap.FromFile(@"C:\Users\ruyut\Pictures\ruyut.png") as Bitmap;
Bitmap qrCodeImage = qrCode.GetGraphic(20, Color.FromArgb(255, 111, 0), Color.FromArgb(43, 43, 43), bitmap);
    


QRCoder 還支援產生郵件、位置、加密貨幣收款地址、wifi 密碼用的 QRCode ,非常方便,可以去 Github 頁面查看

參考資料:
Github - codebude/QRCoder
Property: ECCLevel

留言