(zxing.net)二维码QR Code的简介、实现与解码
一、简介
二维码QR Code(Quick Response Code)是由Denso公司于1994年9月研制的一种矩阵二维码符号,它具有一维条码及其它二维条码所具有的信息容量大、可靠性高、可表示汉字及图象多种文字信息、保密防伪性强等优点。
二维码QR Code呈正方形,常见的是黑白两色。在3个角落,印有较小,像”回”字的的正方图案。这3个是帮助解码软件定位的图案,用户不需要对准,无论以任何角度扫描,数据仍可正确被读取。
由于QR Code码用特定的数据压缩模式表示汉字,它仅用13 bit可表示一个汉字,而PDF417、Data Martix等二维码没有特定的汉字表示模式,因此仅用字节表示模式来表示汉字,在用字节模式表示汉字时,需用16 bit(二个字节)表示一个汉字,因此QR Code码比其它的二维条码表示汉字的效率提高了20%。
QR Code码主要特点:
1、符号规格从版本1(21*21模块)到版本40(177*177模块),每提高一个版本,每边增加4个模块。
2、数据类型与容量(参照最大规格符号版本40-L级):
- (1)、数字数据:7,089个字符;
- (2)、字母数据: 4,296个字符;
- (3)、8位字节数据: 2,953个字符;
- (4)、汉字数据:1,817个字符。
3、数据表示方法:深色模块表示二进制"1",浅色模块表示二进制"0"。
4、纠错能力:
- L级:约可纠错7%的数据码字;
- M级:约可纠错15%的数据码字;
- Q级:约可纠错25%的数据码字;
- H级:约可纠错30%的数据码字。
5、结构链接(可选):可用1-16个QR Code码符号表示一组信息。每一符号表示100个字符的信息。
二、实现
public ActionResult QR_CODE() { QrCodeEncodingOptions options = new QrCodeEncodingOptions(); options.CharacterSet = "utf-8"; options.DisableECI = true; options.ErrorCorrection = ErrorCorrectionLevel.M; options.QrVersion = 12; options.GS1Format = false; options.Width = 150; options.Height = 150; options.Margin = 1; BarcodeWriter writer = new BarcodeWriter(); writer.Format = BarcodeFormat.QR_CODE; writer.Options = options; //如需设置图片为其它颜色,使用此段代码 //BitmapRenderer renderer = new BitmapRenderer(); //renderer.Foreground = Color.Black; //renderer.Background = Color.White; //writer.Renderer = renderer; Bitmap bmp = writer.Write("我是中国人"); MemoryStream ms = new MemoryStream(); bmp.Save(ms, ImageFormat.Png); ms.Flush(); ms.Position = 0; return File(ms, "application/x-png"); }
测试图像如下:
三、解码