微信开发 -- 二维码生成
微信開(kāi)發(fā) – 二維碼生成
生成二維碼無(wú)非就是將一段字符串內(nèi)容以某種特定的方式進(jìn)行編碼, 最終得到一個(gè)圖片。 這里使用 C# 生成二維碼我用到了 QrCode.Net 這個(gè) Nuget 包。
這里我們創(chuàng)建一個(gè)名為 QrCodeGenerate 的 Web 程序, 創(chuàng)建一個(gè) QrCodeUtils 的工具類庫(kù),在 Nuget 包管理控制臺(tái)中鍵入:
Install-Package QrCode.Net安裝好 QrCode.Net 包之后,創(chuàng)建一個(gè) QrCodeUtil.cs 工具類, 添加靜態(tài)方法:
/// <summary> /// 生成二維碼 /// </summary> /// <param name="strContent">待編碼內(nèi)容</param> /// <param name="errorCorrect">錯(cuò)誤校正等級(jí)</param> /// <param name="ms">內(nèi)存流</param> /// <param name="moduleSize">單元尺寸</param> /// <param name="quietZones">空白區(qū)域</param> /// <returns>是否創(chuàng)建成功</returns> public static bool Create(string strContent, string errorCorrect, MemoryStream ms, int moduleSize = 12, QuietZoneModules quietZones = QuietZoneModules.Two) {var encoder = new QrEncoder();encoder.ErrorCorrectionLevel = errorCorrect == "L" ? ErrorCorrectionLevel.L :errorCorrect == "M" ? ErrorCorrectionLevel.M :errorCorrect == "Q" ? ErrorCorrectionLevel.Q : ErrorCorrectionLevel.H;QrCode qr;//對(duì)內(nèi)容進(jìn)行編碼,并保存生成的矩陣 Matrixif (encoder.TryEncode(strContent, out qr)) {var render = new GraphicsRenderer(new FixedModuleSize(moduleSize, quietZones));render.WriteToStream(qr.Matrix, ImageFormat.Png, ms);return true;}else{return false;} }然后在我們的 Web 應(yīng)用程序中添加 QrCodeController , 針對(duì)于 GET 方式和 POST 方式分別創(chuàng)建生成二維碼的 Action 為:
/// <summary> /// 生成二維碼(支持中文) /// </summary> /// <param name="strContent">待編碼內(nèi)容</param> /// <returns></returns> [HttpGet] public ActionResult GenerateByGet(string strContent) {try{using (var memoryStream = new MemoryStream()) {string errorCorrect = "L";QrCodeGenerater.Create(strContent, errorCorrect, memoryStream);return File(memoryStream.GetBuffer(), "image/jpeg");}}catch (Exception){return null;} }/// <summary> /// 生成二維碼(支持中文) /// </summary> /// <param name="strContent">待編碼內(nèi)容</param> /// <returns></returns> [HttpPost] public ActionResult GenerateByPost(string strContent) {try{using (var memoryStream = new MemoryStream()){string errorCorrect = "L";QrCodeGenerater.Create(strContent, errorCorrect, memoryStream);return File(memoryStream.GetBuffer(), "image/jpeg");}}catch (Exception){return null;} }作用都是一樣, 都是生成二維碼, 參數(shù)便是需要進(jìn)行編碼的內(nèi)容, 這里我對(duì)路由做了一點(diǎn)點(diǎn)調(diào)整:
public static void RegisterRoutes(RouteCollection routes) {routes.IgnoreRoute("{resource}.axd/{*pathInfo}");routes.MapRoute(name: "Default",url: "{controller}/{action}/{strContent}",defaults: new { controller = "QrCode", action = "GenerateByGet", strContent = "二維碼生成" }); }啟動(dòng)項(xiàng)目測(cè)試:
輸入路由路由地址(支持中文): http://localhost:40800/QrCode/GenerateByGet/二維碼生成Sample~~~
生成的二維碼:
源碼將會(huì)在評(píng)論中給出
總結(jié)
以上是生活随笔為你收集整理的微信开发 -- 二维码生成的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 简单模仿赛尔号哈莫雷特对战谱尼最难打的第
- 下一篇: Rust学习之——From Trait和