.net core 生成二维码
其實生成二維碼的組件有很多種,如:QrcodeNet,ZKWeb.Fork.QRCoder,QRCoder等
我選QRCoder,是因為小而易用、支持大并發生成請求、不依賴任何庫和網絡服務。
既然是.net core 那當然要用依賴注入,通過構造函數注入到控制器。?
軟件版本
Asp.net Core:2.0
(開發時最新)?
項目結構
Snai.QRCode.Api? Asp.net core 2.0 Api網站
項目實現
新建Snai.QRCode解決方案,在解決方案下新建一個名Snai.QRCode.Api Asp.net core 2.0 Api網站
在 依賴項 右擊 管理NuGet程序包 瀏覽 找到?QRCoder 版本1.3.3 下載安裝?
由于使用依賴注入,依賴抽象不依賴實現,所以要建一個實現二維碼的接口
在項目添加 Common 文件夾,在文件夾添加 IQRCode 二維碼接口,接口定義 GetQRCode 二維碼方法,代碼如下
在 Common 目錄下添加 RaffQRCode 類,繼承IQRCode接口實現GetQRCode類,代碼如下
修改Startup.cs代碼,注入RaffQRCode類到容器
代碼如下:
在Controllers 下添加QRCodeController Api空的控制器,采用構造函數依賴,引入RaffQRCode類
添加GetQRCode(string url, int pixel)方法,加入HttpGet("/api/qrcode")路由地址,方法里使用_iQRCode.GetQRCode(url, pixel)生成二維碼再輸出
代碼如下:
到此所有代碼都已編寫完成
啟動運行項目,在瀏覽器打開 http://localhost:5000//api/qrcode?url=http://www.baidu.com&pixel=4 地址,得到url參數域名的二維碼
?
/* GetGraphic方法參數說明
??????????????? public Bitmap GetGraphic(int pixelsPerModule, Color darkColor, Color lightColor, Bitmap icon = null, int iconSizePercent = 15, int iconBorderWidth = 6, bool drawQuietZones = true)
??????????? *?
??????????????? int pixelsPerModule:生成二維碼圖片的像素大小 ,我這里設置的是5?
??????????? *?
??????????????? Color darkColor:暗色?? 一般設置為Color.Black 黑色
??????????? *?
??????????????? Color lightColor:亮色?? 一般設置為Color.White? 白色
??????????? *?
??????????????? Bitmap icon :二維碼 水印圖標 例如:Bitmap icon = new Bitmap(context.Server.MapPath("~/images/zs.png")); 默認為NULL ,加上這個二維碼中間會顯示一個圖標
??????????? *?
??????????????? int iconSizePercent: 水印圖標的大小比例 ,可根據自己的喜好設置?
??????????? *?
??????????????? int iconBorderWidth: 水印圖標的邊框
??????????? *?
??????????????? bool drawQuietZones:靜止區,位于二維碼某一邊的空白邊界,用來阻止讀者獲取與正在瀏覽的二維碼無關的信息 即是否繪畫二維碼的空白邊框區域 默認為true
??????????? */
源碼訪問地址:https://github.com/Liu-Alan/Snai.QRCode
原文地址:?https://www.cnblogs.com/alan-lin/p/9193290.html
.NET社區新聞,深度好文,歡迎訪問公眾號文章匯總 http://www.csharpkit.com
總結
以上是生活随笔為你收集整理的.net core 生成二维码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 分布式事务一致性解决方案
- 下一篇: 值类型、引用类型和泛型的前世今生