目 录

1 引言 6
2 二维码的生成原理 6
2.1基础知识 6
2.1.1定位图案 7
2.1.2功能性数据 8
2.1.3数据码和纠错码 8
2.2数据编码 8
2.3结束符和补齐符 9
2.3.1补齐码(Padding Bytes) 9
2.3.2纠错码 10
2.4最终编码 11
2.4.1穿插放置 11
2.4.2Remainder Bits 13
2.5画二维码图 14
2.5.1 Position Detection Pattern 14
2.5.2 Alignment Pattern 14
2.5.3 Timing Pattern 14
2.5.4 Format Information 15
2.5.5 Version Information 16
2.5.6数据和数据纠错码 17
2.5.7掩码图案 18
3 二维码生成系统设计和方法 20
3.1 总体设计 20
3.2功能设计 20
3.2.1二维码可自主添加logo 20
3.2.2 可以生成网址类型二维码 20
3.2.3 关于如何添加logo的方法 21
4代码实现之核心代码 25
4.1生成二维码的组件thoughtworks.qrcode 25
4.2 利用ThoughtWorks.QRCode.Codec生成二维码 26
4.3 Encoder.cs编码器 27
4.4 BitVector.cs位向量 28
4.5 BlockPair.cs生成矩阵 32
4.6容错率的实现 33
5代码实现之界面功能代码 35
5.1实现编码方式可选的主要部分代码 35
5.2实现可自主上传添加logo功能代码 36
5.3实现控制二维码大小的功能代码 39
5.4实现纠错等级调整的二维码功能代码 39
6 结束语 41
参考文献 42
致谢 43
2 二维码的生成原理
2.1基础知识
首先,二维码一共有40个尺寸。官方叫版本Version。Version 1是21 x 21的矩阵,Version 2是 25 x 25的矩阵,Version 3是29的尺寸,每增加一个version,就会增加4的尺寸,公式是:(V-1)*4 + 21(V是版本号) 最高Version 40,(40-1)*4+21 = 177,所以最高是177 x 177 的正方形。
如图1是一个二维码的样例:

图1 二维码的样例

2.1.1定位图案
Position Detection Pattern是定位图案,用于标记二维码的矩形大小。这三个定位图案有白边叫Separators for Postion Detection Patterns。之所以三个而不是四个意思就是三个就可以标识一个矩形了。
Timing Patterns也是用于定位的。原因是二维码有40种尺寸,尺寸过大需要有标准线,否则会出现扫描读取失误。
Alignment Patterns 只有Version 2以上(包括Version2)的二维码需要这个同样是为了定位用的。
2.1.2功能性数据
Format Information 存在于所有的尺寸中,用于存放一些格式化数据的。Version Information 在 >= Version 7以上,需要预留两块3 x 6的区域存放一些版本信息。
2.1.3数据码和纠错码
除了上述的那些位置,剩下的地方存放 Data Code 数据码 和 Error Correction Code 纠错码。
2.2数据编码
QR码支持如下的编码:
Numeric mode数字编码:从0到9。如果需要编码的数字的个数不是3的倍数,那么,最后剩下的1或2位数会被转成4或7bits,则其它的每3位数字会被编成 10,12,14bits,编成多长还要看二维码的尺寸
Alphanumeric mode字符编码:包括 0-9,大写的A到Z(没有小写),以及符号$ % * + – . / : 包括空格。这些字符会映射成一个字符索引表。如下所示:(其中的SP是空格,Char是字符,Value是其索引值) 编码的过程是把字符两两分组,然后转成45进制,然后转成11bits的二进制,本文转载自http://www.biyezuopin.vip/onews.asp?id=12645如果最后有一个尾数,那就转成6bits的二进制。而编码模式和字符的个数需要根据不同的Version尺寸编成9, 11或13个二进制
Byte mode字节编码:可以是0-255的ISO-8859-1字符。有些二维码的扫描器可以自动检测是否是UTF-8的编码。

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="index.aspx.cs" Inherits="index" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server"><title></title>
</head>
<body><form id="form1" runat="server"><table border="0" cellpadding="0" cellspacing="0" style="width:100%"><TR><TD width="100%"><fieldset style="height:100%;"><table align="center" border="0" cellpadding="0"cellspacing="0" style="font-size: 12px; width: 46%; font-family: Tahoma; border-collapse: collapse"><tr><td align="right" style="height: 25px; width: 97px;">用户名:</td><td style="height: 25px"><div align="left"><asp:TextBox ID="txtUserName" runat="server"></asp:TextBox><asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="txtUserName" ErrorMessage="用户名不能为空"></asp:RequiredFieldValidator></div></td></tr><tr><td align="right" class="style1">密码:</td><td class="style2"><asp:TextBox ID="txtPwd" runat="server"></asp:TextBox>(注:默认密码666666)</td></tr><tr align="center" height="55"><td>&nbsp;</td><td align="left"><br /><asp:Button ID="Button2" runat="server" class="button" Text="保 存" onclick="Button2_Click" /></td></tr><tr align="center" height="55"><td>&nbsp;</td><td align="left"><br /></td></tr><tr align="center" height="55"><td>&nbsp;</td><td align="left"></td></tr><tr align="center" height="55"><td>&nbsp;</td><td align="left"><br /></td></tr><tr align="center" height="55"><td>&nbsp;</td><td align="left"><br /></td></tr></table><br /></fieldset>         </TD></TR></TABLE></form>
</body>
</html>











基于WEB的二维码生成系统设计与实现(Asp.net)相关推荐

  1. simple go web application 二维码生成 打包部署

    go语言简易web应用 & 二维码生成及解码 & 打包部署 转载请注明出处: https://www.cnblogs.com/funnyzpc/p/10801476.html 前言(闲 ...

  2. 聊聊 Web 项目二维码生成的最佳姿势

    在设计和实现的过程之后,你永远不知道部署上去的程序会已什么样的姿势运行. 本篇借一次生成二维码逻辑的不同实现,阐述 Web 项目中二维码生成的正确姿势. 文中如有批量,欢迎各位看客老爷拍砖.试运行前5 ...

  3. 基于MCU的二维码生成及在墨水屏上进行二维码显示

    墨水屏相比其他LCD屏幕在低功耗方面有着显著优势,特别适合纽扣电池甚至是无电池的nfc价签的应用场合.价签经常要显示二维码,因此网上找了下找到了一个合适的适合在mcu上进行使用的二维码生成库. Git ...

  4. 基于Zxing的二维码生成和二维码扫描

    最近又在倒腾二维码,发现网上的教程都不够用,所以把之前整合的二维码Demo有拿出来重新添加些功能,这里也算是重新学习吧! 当然对于二维码,相信大家都很熟悉了.这里就不多说.本项目是基于Zxing的开源 ...

  5. 基于Python的二维码识别系统设计与实现

    博主介绍:擅长Java.微信小程序.Python.Android等,专注于Java技术领域和毕业项目实战✌

  6. 基于Excel的QR二维码生成工具——原理及算法详解(之一)

    老虎二维码(下载链接在这里)是一个基于Excel的二维码生成工具,完全使用Excel表单公式结合VBA实现,没有调用任何外部库,实现了支持中文英文混合字符以及常用微信二维码编码的自动生成,在工作表单元 ...

  7. canvas 插件_基于canvas的JavaScript 二维码生成工具——QRCanvas

    介绍 在我们日常的开发中,特别是在现代的社会环境下,二维码的应用可谓是丰富多彩,各种各样让人眼花缭乱的二维码,可见二维码已经渗透进我们生活的方方面面,也可以说目二维码确确实实方便了我们的生活.因为作为 ...

  8. springboot2整合二维码 生成二维码图片及输出web端及打印

    step1 导包 <!-- 二维码 --><dependency><groupId>com.google.zxing</groupId><arti ...

  9. JAVA实现基于ZXing的二维码自动生成与图片合成

    JAVA实现基于ZXing的二维码自动生成与图片合成 近日做项目需要生成带有信息的二维码,并嵌入到一张图片中.实现思路采用Zxing生成二维码,java图形库进行图片的嵌入. 生成二维码 ZXing是 ...

最新文章

  1. 这所211高校通知不放寒假!校园将实行封闭管理!
  2. 【数据竞赛】CCF乘用车细分市场销量预测竞赛总结
  3. jvm调优:GC日志格式
  4. 机电传动控制第一周学习笔记
  5. 如何使用Xcode分析调试在真机运行的UE4 IOS版游戏
  6. 强化简书社交属性,淡化官腔官调
  7. [转载] java构造函数初始化与执行顺序问题
  8. 《机器视觉算法与应用》第3章 机器视觉算法之数据结构——学习笔记
  9. 华为RS技术认证,IA/IP/IE它们都要学什么?
  10. 前端实现视频或者图片直链下载
  11. js做个人所得税计算器
  12. Linux 脚本修改ps1,Ubuntu修改命令提示符PS1教程(非常详细)
  13. ios13 微信提示音插件_iOS13免越狱修改微信提示音方法!亲测有用!
  14. double和float区别
  15. Elasticsearch与Spring的集成
  16. 打造国内专业企业研发管理解决方案,ONES完成华创资本领投A+轮600万美元融资
  17. 【中亦安图】导致Oracle性能抖动的参数提醒(4)
  18. 微积分——Rolle定理的理解(罗尔定理)
  19. java bubble sort_Java-BubbleSort
  20. 2015年新的开始新的生活

热门文章

  1. 客如云:ADB助力客如云实现精准营销服务
  2. html中把时间戳转换为日期格式,如何把时间戳转换成日期类型的格式
  3. MySQL插入语句优化
  4. python朋友圈图片_用Python发一个高逼格的朋友圈
  5. 3名中学生脚踹流浪老人还发视频炫耀:没教养的人,有多可怕?
  6. Android 内置多个launcher 设置默认launcher
  7. UMLet安装以及使用说明
  8. ElasticSearch的matchQuery与termQuery
  9. 老年人Theta-Gamma跨频率耦合与工作记忆表现的纵向关系研究
  10. R 语言可视化学习之路——基础图形