其實生成二維碼的組件有很多種,如: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
