前言
在日常開發(fā)需求中,生成二維碼以分享文本內(nèi)容或跳轉(zhuǎn)至指定網(wǎng)站鏈接等場景是比較常見的。今天大姚給大家分享一款.NET開源(MIT License)、免費(fèi)、簡單易用、功能強(qiáng)大的二維碼生成類庫:QrCodeGenerator。
項(xiàng)目特點(diǎn)
- 跨平臺兼容性: 支持.NET Standard 2.0及更高版本,因此可以運(yùn)行在大多數(shù)現(xiàn)代.NET平臺上,包括.NET Core、.NET Framework、Mono等,同時(shí)也支持.NET 6在所有平臺上的運(yùn)行。
- 豐富的輸出格式: 提供了多種輸出格式,包括QR符號的原始模塊/像素、SVG和XAML路徑、BMP位圖等。
- 高效的文本編碼: 對數(shù)字和特殊字母數(shù)字文本進(jìn)行編碼,所占用的空間小于一般文本。
- 靈活的參數(shù)設(shè)置: 允許開發(fā)者指定掩碼模式、錯(cuò)誤糾正級別以及數(shù)據(jù)段列表等參數(shù),提供了高度的靈活性和定制性。
- 使用示例代碼豐富: 項(xiàng)目源碼提供了在WinForms、WPF、WinUI、ASP.NET Core等環(huán)境中使用示例代碼。
圖像生成擴(kuò)展
從.NET 6開始,System.Drawing只支持Windows操作系統(tǒng),無法兼容跨平臺。因此ToBitmap()
已被刪除,現(xiàn)在以方法擴(kuò)展的形式提供了三個(gè)選項(xiàng)。
選擇下面的一個(gè)映像庫,將NuGet依賴項(xiàng)添加到項(xiàng)目中,并且將相應(yīng)的QrCodeBitmapExtensions.cs文件復(fù)制到項(xiàng)目中。

控制臺應(yīng)用中快速使用
創(chuàng)建控制臺應(yīng)用
創(chuàng)建名為:QrCodeGeneratorExercise
的控制臺應(yīng)用!


NuGet包安裝
在NuGet中搜索:Net.Codecrete.QrCodeGenerator
和SkiaSharp
類庫安裝。


生成二維碼并保存為png
var test1 = QrCode.EncodeText("追逐時(shí)光者!!!", QrCode.Ecc.Medium);
test1.SaveAsPng("test1-qr-code.png", 10, 3);

生成帶顏色的二維碼并保存為png
var test2 = QrCode.EncodeText("追逐時(shí)光者!??!", QrCode.Ecc.High);
test2.SaveAsPng("test2-qr-code.png", 12, 4,
foreground: SKColor.Parse("#628bb5"),
background: SKColor.Parse("#ffffff"));

生成二維碼并保存為svg
var test3 = QrCode.EncodeText("追逐時(shí)光者!??!", QrCode.Ecc.Medium);
var svg = test3.ToSvgString(4);
File.WriteAllText("test3-qr-code.svg", svg, Encoding.UTF8);

生成帶顏色的二維碼并保存為svg
var test4 = QrCode.EncodeText("追逐時(shí)光者?。?!", QrCode.Ecc.Medium);
var svg1 = test4.ToSvgString(4, "#98b2cd", "#ffffff");
File.WriteAllText("test4-qr-code.svg", svg1, Encoding.UTF8);

項(xiàng)目源代碼
QrCodeGenerator提供了豐富的示例代碼,展示了如何在WinForms、WPF、WinUI、ASP.NET Core等環(huán)境中使用。


WinForms運(yùn)行效果
打開Demo-WinForms
項(xiàng)目運(yùn)行:

WPF運(yùn)行效果
打開Demo-WindowsPresentationFoundation
項(xiàng)目運(yùn)行:

ASP.NET Core運(yùn)行效果
打開ASP.NET-Core
項(xiàng)目運(yùn)行:

項(xiàng)目源碼地址
更多項(xiàng)目實(shí)用功能和特性歡迎前往項(xiàng)目開源地址查看??,別忘了給項(xiàng)目一個(gè)Star支持??。
該文章在 2024/7/31 9:02:00 編輯過