雖然已經有很多生成二維碼的解決方案,但是它們大多依賴System.Drawing,而在Linux下需要考慮System.Drawing的GDI+兼容性問題(需要安裝libgdiplus)。
要實現真正的跨平台二維碼生成方案,可以試試SkiaSharp.QrCode,因為它完全不依賴GDI和System.Drawing。github地址:https://github.com/guitarrapc/SkiaSharp.QrCode
首先引用Nuget包SkiaSharp.QrCode 代碼如下
:
var content = "test 內容 222222222222222222222"; //創建生成器 using (var generator = new QRCodeGenerator()) { // 設置錯誤校正能力(ECC)級別 var qr = generator.CreateQrCode(content, ECCLevel.H); // 創建一個Canvas var info = new SKImageInfo(512, 512); using (var surface = SKSurface.Create(info)) { var canvas = surface.Canvas; // 渲染二維碼到Canvas canvas.Render(qr, info.Width, info.Height); // 輸出到文件 using (var image = surface.Snapshot()) using (var data = image.Encode(SKEncodedImageFormat.Png, 100)) using (var stream = System.IO.File.OpenWrite(@"QRCode.png")) { data.SaveTo(stream); } } }
Skia是一個開源的二維圖形庫,提供各種常用的API,並可在多種軟硬件平台上運行。谷歌Chrome瀏覽器、Chrome OS、安卓、火狐瀏覽器、火狐操作系統以及其它許多產品都使用它作為圖形引擎。
Skia由谷歌出資管理,任何人都可基於BSD免費軟件許可證使用Skia。Skia開發團隊致力於開發其核心部分, 並廣泛采納各方對於Skia的開源貢獻。
SkiaSharp
SkiaSharp是由Mono發起,基於谷歌的Skia圖形庫,實現的一個跨平台的2D圖形.NET API綁定。提供一個全面的2D API,可用於跨移動、服務器和桌面模式的圖形渲染和圖像處理。
skiasharp提供PCL和平台特定的綁定:
- .NET Core / .NET Standard 1.3
- Xamarin.Android
- Xamarin.iOS
- Xamarin.tvOS
- Xamarin.Mac
- Windows Classic Desktop (Windows.Forms / WPF)
- Windows UWP (Desktop / Mobile / Xbox / HoloLens)