微信开发 – 二维码生成

生成二维码无非就是将一段字符串内容以某种特定的方式进行编码, 最终得到一个图片。 这里使用 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~~~

生成的二维码:

源码将会在评论中给出

微信开发 -- 二维码生成相关推荐

  1. 微信支付:支付流程分析、微信扫码支付(HttpClient)、微信支付二维码生成、检测支付状态、订单状态操作准备工作、支付信息回调、MQ处理支付回调状态、定时处理订单状态

    微信支付 微信支付开发的整体思路 生成支付二维码 查询支付状态(微信的服务器) 实现订单状态的修改.删除订单 支付状态回查->微信服务器将支付状态返回给支付微服务 MQ处理支付回调状态 Rabb ...

  2. Java 快速开发二维码生成服务

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 来源 | 公众号「码农小胖哥」 1. 前言 不知道从什么 ...

  3. iOS开发二维码生成和扫描

    准备工作 导入<CoreImage/CoreImage.h>,生成二维码用 导入<AVFoundation/AVFoundation.h>,读取二维码用 设置代理协议AVCap ...

  4. iOS 开发 二维码生成大全(黑白/彩色二维码和带图片的二维码)详解

    前言 扫描二维码使用的是coreImage框架,属于UIKit框架中的体系,多以使用时不用导入coreImage框架 开始之前,让我们谈谈Core Image框架中最重要的几个类: CIContext ...

  5. iOS开发二维码生成(一)

    二维码是一种比一维码更高级的条码格式.一维码只能在一个方向(一般是水平方向)上表达信息,而二维码在水平和垂直方向都可以存储信息.一维码只能由数字和字母组成,而二维码能存储汉字.数字和图片等信息,因此二 ...

  6. 微信小程序二维码生成工具,后端二维码生成工具类。

    微信小程序开发二维码生成工具类 前言 业务背景 设计思路 具体实现 接下来我们进行工具的改造 前言 或许这是你搜寻的第n篇文章来解决你项目中的问题,虽然我不能去替你完全适配你的业务需求,但是我可以给你 ...

  7. 微信推广二维码接口使用总结

    前一段时间小编的公司接手了一个微信分销的项目,该项目中有一个推广二维码的功能:分销商可以生成自己的二维码,当其他用户首次扫描的时候会自动成为该分销商的下级.这个过程中最主要的就是利用微信的生成二维码接 ...

  8. 微信公众号开发:渠道二维码生成/粉丝来源归属统计打标签

    作为一个运营人?离不开一个话题:推广公号.每天打开公号后台第一眼:粉丝数 继续点开,统计--用户分析 用户增长:昨日/每天,每一样的数据(新增,取关,净增,累积) 用户属性:性别,年龄,地域等 那如果 ...

  9. 微信公众平台开发(三)——微信二维码生成扫码关注

    微信二维码生成是指后端发送请求向微信服务器申请公众号的二维码,用户如果未关注,进行扫描改二维码后即跳转道公众号的关注页面:如果已经关注,扫描二维码后直接进入该微信公众号.当用户扫码时,微信服务器会向后 ...

最新文章

  1. Agile DSL Development in Ruby 笔记
  2. Delphi下使用指针的简单总结
  3. 使用Windows Server Backup备份恢复Exchange Server 2010数据库
  4. Matlab-重构和重新排列数组
  5. nn.AdaptiveAvgPool1d()
  6. 【pycharm】pycharm上安装tensorflow,报错:AttributeError: module ‘pip‘ has no attribute ‘main‘ 解决方法
  7. GridView 合并列、行类
  8. 基于Visua C++2010 与 Windows 7 SDK开发windows7 Shell应用(1)-搜索文件夹
  9. 第2.01节 发布版本vs源码编译
  10. 【SBUS,串口DMA】用STM32F407的串口DMA读取SBUS接收机信号
  11. 黑苹果使用Karabiner-Elements改Windows快捷键教程
  12. C语言中的运算符大全(内附优先级表)
  13. 14个美容秘诀 网上疯传却最毁容
  14. 【Ext.Net学习笔记】05:Ext.Net GridPanel的用法(包含Filter、Sorter、Grouping、汇总(Summary)的用法)...
  15. 嵌入式 wave文件(*.wav)格式、PCM数据格式收藏
  16. pip 如何查看一个包所有的历史版本
  17. House Robber的解法
  18. The Fundamentals of Commodity Futures Returns(Gary B. Gorton,Fumio Hayashi,K. Geert Rouwenhorst)
  19. 【实战技能】如何做好技术培训?
  20. Cockos Reaper for Mac(专业数字音频制作软件)

热门文章

  1. Linux基本命令-grep 命令
  2. itextpdf 怎么下划线_iText的新字体用粗体部分和下划线
  3. Android销毁活动是什么意思,android – 服务自动被要求销毁活动
  4. Bypassing PatchGuard on Windows x64
  5. 西电计算机通信与网络复习
  6. C/C++、OS、网络面经
  7. 服务器系统通用串行总线控制器,win7系统usb设备不能用通用串行总线控制器无法启动的解决方法...
  8. SettingsProvider简单分析
  9. 梦幻岛:一场“艺术策展”与“WEB3”的梦幻联动
  10. 数据库查询记录集转化为树状结构,数组转树状结构