最近項目上有個需求,需要將某個文件的下載地址生成二維碼,並展示到網頁上.
目前網上生成二維碼的方法有好幾種,本文將介紹【QRCoder】生成二維碼的方式
一、首先通過VS中的【NUGET】下載並引用QRCoder.dll
使用VS打開項目,項目->右鍵->管理Nuget程序包,然后選擇聯機,在輸入框中輸入QRCoder,如下圖所示:
二、編寫生成二維碼代碼,並返回至頁面
1、WebFrom (項目框架)
2、功能場景:客戶端瀏覽器使用jQuery.ajax 請求服務端返回二維碼,服務端通過一般處理程序Handler.ashx 處理客戶端請求並返回二維碼至客戶端
// 生成二維碼的內容 string strCode = "http://www.walys.com"; QRCodeGenerator qrGenerator = new QRCoder.QRCodeGenerator(); QRCodeData qrCodeData = qrGenerator.CreateQrCode(strCode, QRCodeGenerator.ECCLevel.Q); QRCode qrcode = new QRCode(qrCodeData); // qrcode.GetGraphic 方法可參考最下發“補充說明” Bitmap qrCodeImage = qrcode.GetGraphic(5,Color.Black,Color.White,null,15,6,false); MemoryStream ms = new MemoryStream(); qrCodeImage.Save(ms, ImageFormat.Jpeg); // 如果想保存圖片 可使用 qrCodeImage.Save(filePath); // 響應類型 context.Response.ContentType = "image/Jpeg"; //輸出字符流 context.Response.BinaryWrite(ms.ToArray());
以上為QRCoder生成二維碼的核心代碼
補充說明:QRCode.GetGraphic方法參數說明
Bitmap qrCodeImage = qrcode.GetGraphic(5,Color.Black,Color.White,null,15,6,false);
/* 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 */