微信开发 -- 二维码生成
2015-11-02 23:35
621 查看
微信开发 – 二维码生成
生成二维码无非就是将一段字符串内容以某种特定的方式进行编码, 最终得到一个图片。 这里使用 C# 生成二维码我用到了 QrCode.Net 这个 Nuget 包。
这里我们创建一个名为 QrCodeGenerate 的 Web 程序, 创建一个 QrCodeUtils 的工具类库,在 Nuget 包管理控制台中键入:
安装好 QrCode.Net 包之后,创建一个 QrCodeUtil.cs 工具类, 添加静态方法:
然后在我们的 Web 应用程序中添加 QrCodeController , 针对于 GET 方式和 POST 方式分别创建生成二维码的 Action 为:
作用都是一样, 都是生成二维码, 参数便是需要进行编码的内容, 这里我对路由做了一点点调整:
启动项目测试:
输入路由路由地址(支持中文):
生成的二维码:
源码将会在评论中给出
生成二维码无非就是将一段字符串内容以某种特定的方式进行编码, 最终得到一个图片。 这里使用 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; //对内容进行编码,并保存生成的矩阵 Matrix if (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~~~
生成的二维码:
源码将会在评论中给出
相关文章推荐
- 微信开发之客服消息的使用
- XMPP框架 微信项目开发之CoreData学习——CoreData的多表关联操作
- XMPP框架 微信项目开发之CoreData学习——CoreData的基本使用
- 微信手环1年多了,前主管终于出来聊了聊它是怎么诞生的
- Android录音播放工具类,仿微信语音聊天。
- 一个使用递归算法的小程序
- iOS 官方文档翻译 微信公众平台 和 github 同步上线
- ShareSDK微信分享时的坑
- 021.数组的二分查找
- 微信JS-SDK自定义分享链接
- Android 高仿微信 获取最近刚刚拍照的缩略图 功能实现
- 一个仿微信的Android图片选择组件:PhotoPicker
- C# 微信企业号--管理素材文件
- 微信客户端.NET版
- C# 微信企业号--发送消息
- 微信支付:只有一个确认键以及和友盟微信SDK冲突解决方案
- C# 微信企业号--OAuth2.0验证
- C# 微信企业号--接收普通消息与事件
- aws简单开发之ec2定时开关机
- 【Little_things】事件驱动的带界面的Client/Server聊天小程序(java socket)