使用C#快速生成二维码 | 真正跨平台方案
生活随笔
收集整理的這篇文章主要介紹了
使用C#快速生成二维码 | 真正跨平台方案
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
前言
二維碼(QR Code),與傳統(tǒng)的一維碼,比如條形碼,二維碼具有存儲的數(shù)據(jù)量更大;可以包含數(shù)字、字符,及中文文本等混合內容;有一定的容錯性(在部分損壞以后還可以正常讀取);空間利用率高等優(yōu)點。
因此,二維碼在我們的生活中被廣泛應用,例如支付碼、健康碼等。
SkiaSharp.QrCode介紹
雖然已經(jīng)有很多生成二維碼的解決方案,但是它們大多依賴System.Drawing,而在Linux下需要考慮System.Drawing的GDI+兼容性問題(需要安裝libgdiplus)。
如果要實現(xiàn)真正的跨平臺二維碼生成方案,可以試試SkiaSharp.QrCode,因為它完全不依賴GDI和System.Drawing。
Demo
引用Nuget包SkiaSharp.QrCode,然后編寫如下代碼:
var?content?=?"My?IO"; //創(chuàng)建生成器 using?(var?generator?=?new?QRCodeGenerator()) {//?設置錯誤校正能力(ECC)級別var?qr?=?generator.CreateQrCode(content,?ECCLevel.H);//?創(chuàng)建一個Canvasvar?info?=?new?SKImageInfo(512,?512);using?(var?surface?=?SKSurface.Create(info)){var?canvas?=?surface.Canvas;//?渲染二維碼到Canvascanvas.Render(qr,?info.Width,?info.Height);//?輸出到文件using?(var?image?=?surface.Snapshot())using?(var?data?=?image.Encode(SKEncodedImageFormat.Png,?100))using?(var?stream?=?File.OpenWrite(@"QRCode.png")){data.SaveTo(stream);}} }結論
生成二維碼最關鍵的是ECC級別設置,具體取決于最終圖像計劃使用的場合,是否容易被污損或遮擋:
L:最大糾錯率7%
M:最大糾錯率15%
Q:最大糾錯率25%
H:最大糾錯率30%
比如上面生成的二維碼,我覆蓋了一張Logo圖片,還是可以正常識別的:
如果你覺得這篇文章對你有所啟發(fā),請關注我的個人公眾號”My IO“
總結
以上是生活随笔為你收集整理的使用C#快速生成二维码 | 真正跨平台方案的全部內容,希望文章能夠幫你解決所遇到的問題。