您的位置:首页 > 编程语言 > C#

C# 生成二维码

2015-09-21 14:58 701 查看
  二维码又称 QR Code,QR 全称 Quick Response,是一个近几年来移动设备上超流行的一种编码方式,它比传统的 Bar Code 条形码能存更多的信息,也能表示更多的数据类型:比如:字符,数字,中文等等。今天就来跟大家分享一下我的二维码生成解析工具,主要功能就是生成二维码,并且可以添加自定义的Logo。当然,网络上面生成二维码的工具多如牛毛,生成二维码早已不再新鲜。这个工具的一个亮点就是可以识别二维码,下面就来具体看看吧,不过首先要补充一点二维码的知识。

一、二维码基础知识

一、二维码的版本

  首先,我们先说一下二维码一共有 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 的正方形。

下面我们看看一个二维码的实例:



二、QR码的容错处理

二维码支持纠错处理;纠错处理相对复杂,按照QR码的标准文档说明,QR码的纠错分为4个级别,分别是:

level L : 最大 7% 的错误能够被纠正;

level M : 最大 15% 的错误能够被纠正;

level Q : 最大 25% 的错误能够被纠正;

level H : 最大 30% 的错误能够被纠正;

三、二维码(QR Code)的容量

  对于不同版本的二维码,容量也是不同的。理论上内容经过压缩处理后可以存7089个数字,4296 个字母和数字混合字符,2953个8位字节数据,1817个汉字;在上面我们看到,不同的Version的QR Code是不同的矩阵,Version版本越过,也就意味着容量越大。关于容量的计算我没有找到比较权威的算法,这里以第一版的来进行计算,第一版(21×21)的格式如下:



其中的只有黄色的是存储数据的内容,在第一版本中只有217(21×21 - 8*9*3 -8)个存储数据的数空间,而其中有用的数据是 217 - 1个数据结尾标志 = 216 ,在216bit

216bit/8 = 27Byte 在版本一的QR码中只能够存储27Byte的数据(要是有校验容错就更少了),当然在不同的容错级别下,容量也是有变化的。

所以,version为1的QR Code大概也就能容下十几个字符。

四、二维码的编码

QR 码支持如下的编码:

  Numeric mode 数字编码,从 0 到9。如果需要编码的数字的个数不是 3 的倍数,那么,最后剩下的 1 或 2 位数会被转成 4 或 7bits,则其它的每 3 位数字会被编成 10,12,14bits,编成多长还要看二维码的尺寸(下面有一个表 Table 3 说明了这点)

  Alphanumeric mode 字符编码。包括 0-9,大写的A到Z(没有小写),以及符号$ % * + – . / : 包括空格。这些字符会映射成一个字符索引表。如下所示:(其中的 SP 是空格,Char 是字符,Value 是其索引值) 编码的过程是把字符两两分组,然后转成下表的 45 进制,然后转成 11bits 的二进制,如果最后有一个落单的,那就转成 6bits 的二进制。而编码模式和字符的个数需要根据不同的 Version 尺寸编成9, 11 或 13 个二进制(如下表中 Table 3)



Byte mode, 字节编码,可以是0-255 的 ISO-8859-1 字符。有些二维码的扫描器可以自动检测是否是 UTF-8 的编码

参考资源

/article/5018083.html

http://www.cnblogs.com/cheng5x/p/3774767.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: