微信开发 -- 二维码生成
生活随笔
收集整理的這篇文章主要介紹了
微信开发 -- 二维码生成
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
微信開發 – 二維碼生成
生成二維碼無非就是將一段字符串內容以某種特定的方式進行編碼, 最終得到一個圖片。 這里使用 C# 生成二維碼我用到了 QrCode.Net 這個 Nuget 包。
這里我們創建一個名為 QrCodeGenerate 的 Web 程序, 創建一個 QrCodeUtils 的工具類庫,在 Nuget 包管理控制臺中鍵入:
Install-Package QrCode.Net安裝好 QrCode.Net 包之后,創建一個 QrCodeUtil.cs 工具類, 添加靜態方法:
/// <summary> /// 生成二維碼 /// </summary> /// <param name="strContent">待編碼內容</param> /// <param name="errorCorrect">錯誤校正等級</param> /// <param name="ms">內存流</param> /// <param name="moduleSize">單元尺寸</param> /// <param name="quietZones">空白區域</param> /// <returns>是否創建成功</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;//對內容進行編碼,并保存生成的矩陣 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 應用程序中添加 QrCodeController , 針對于 GET 方式和 POST 方式分別創建生成二維碼的 Action 為:
/// <summary> /// 生成二維碼(支持中文) /// </summary> /// <param name="strContent">待編碼內容</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">待編碼內容</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;} }作用都是一樣, 都是生成二維碼, 參數便是需要進行編碼的內容, 這里我對路由做了一點點調整:
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 = "二維碼生成" }); }啟動項目測試:
輸入路由路由地址(支持中文): http://localhost:40800/QrCode/GenerateByGet/二維碼生成Sample~~~
生成的二維碼:
源碼將會在評論中給出
總結
以上是生活随笔為你收集整理的微信开发 -- 二维码生成的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 简单模仿赛尔号哈莫雷特对战谱尼最难打的第
- 下一篇: Rust学习之——From Trait和