-
实例教您C#如何生成二维码?-附源码
二维码基础知识
二维条码/二维码(2-dimensional bar code)是用某种特定的几何图形按一定规律在平面(二维方向上)分布的、黑白相间的、记录数据符号信息的图形;在代码编制上巧妙地利用构成计算机内部逻辑基础的“0”、“1”比特流的概念,使用若干个与二进制相对应的几何形体来表示文字数值信息,通过图象输入设备或光电扫描设备自动识读以实现信息自动处理:它具有条码技术的一些共性:每种码制有其特定的字符集;每个字符占有一定的宽度;具有一定的校验功能等。同时还具有对不同行的信息自动识别功能、及处理图形旋转变化点。
最近做项目遇到生成二维码的问题,发现网上用的最多的是ThoughtWorks.QRCode和QrCode.Net两种方式。访问官网看着例子写了两个Demo,使用过程中发现两个都挺好用的,ThoughtWorks.QRCode的功能更多一些,但是dll文件有6兆,QrCode.Net只有400多K,大家根据自己的需要选择吧。附上代码仅供参考。
ThoughtWorks.QRCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
using System; using System.Drawing; using System.Text; using ThoughtWorks.QRCode.Codec; namespace ConsoleTest { public class Test { #region 生成二维码 /// <summary> /// 生成二维码 /// </summary> /// <param name="number"></param> /// <returns></returns> private static string QRCode() { System.Drawing.Bitmap bt; string enCodeString = "http://www.woaidaogu.com" ; QRCodeEncoder qrCodeEncoder = new QRCodeEncoder(); qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE; //编码方式(注意:BYTE能支持中文,ALPHA_NUMERIC扫描出来的都是数字) qrCodeEncoder.QRCodeScale = 4; //大小(值越大生成的二维码图片像素越高) qrCodeEncoder.QRCodeVersion = 0; //版本(注意:设置为0主要是防止编码的字符串太长时发生错误) qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M; //错误效验、错误更正(有4个等级) qrCodeEncoder.QRCodeBackgroundColor = Color.Yellow; //背景色 qrCodeEncoder.QRCodeForegroundColor = Color.Green; //前景色 bt = qrCodeEncoder.Encode(enCodeString, Encoding.UTF8); string filename = "code" ; string file_path = AppDomain.CurrentDomain.BaseDirectory + "QRCode\\" ; string codeUrl = file_path + filename + ".jpg" ; //根据文件名称,自动建立对应目录 if (!System.IO.Directory.Exists(file_path)) System.IO.Directory.CreateDirectory(file_path); bt.Save(codeUrl); //保存图片 return codeUrl; } #endregion } } |
QrCode.Net:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
protected void Button1_Click( object sender, EventArgs e) { using ( var ms = new MemoryStream()) { string stringtest = "http://www.woaidaogu.com/" ; GetQRCode(stringtest, ms); Response.ContentType = "image/Png" ; Response.OutputStream.Write(ms.GetBuffer(), 0, ( int )ms.Length); Image img = Image.FromStream(ms); string filename = DateTime.Now.ToString( "yyyymmddhhmmss" ); string path = Server.MapPath( "~/image/" ) + filename + ".png" ; img.Save(path); Response.End(); } } /// <summary> /// 获取二维码 /// </summary> /// <param name="strContent">待编码的字符</param> /// <param name="ms">输出流</param> ///<returns>True if the encoding succeeded, false if the content is empty or too large to fit in a QR code</returns> public static bool GetQRCode( string strContent, MemoryStream ms) { ErrorCorrectionLevel Ecl = ErrorCorrectionLevel.M; //误差校正水平 string Content = strContent; //待编码内容 QuietZoneModules QuietZones = QuietZoneModules.Two; //空白区域 int ModuleSize = 12; //大小 var encoder = new QrEncoder(Ecl); QrCode qr; if (encoder.TryEncode(Content, out qr)) //对内容进行编码,并保存生成的矩阵 { var render = new GraphicsRenderer( new FixedModuleSize(ModuleSize, QuietZones)); render.WriteToStream(qr.Matrix, ImageFormat.Png, ms); } else { return false ; } return true ; } |
参考文献:我爱捣鼓 http://www.woaidaogu.com
这就是我们经常用到的C#生成二维码的方法,使用ThoughtWorks.QRCode和QrCode.Net两个组件,希望对大家有所帮助!
文章出处:https://www.cnblogs.com/tudouguaishou/p/14647044.html
栏目列表
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
SQL Server -- 解决存储过程传入参数作为s
关于JS定时器的整理
JS中使用Promise.all控制所有的异步请求都完
js中字符串的方法
import-local执行流程与node模块路径解析流程
检测数据类型的四种方法
js中数组的方法,32种方法
前端操作方法
数据类型
window.localStorage.setItem 和 localStorage.setIte
如何完美解决前端数字计算精度丢失与数