zoukankan      html  css  js  c++  java
  • (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");
        }

    测试图像如下:

            

    三、解码

    点击查看

  • 相关阅读:
    java.lang.NoClassDefFoundError异常处理
    CMS之promotion failed&concurrent mode failure
    jvm 内存,线程,gc分析
    spring 参数校验
    常用的正则表达式
    《深入理解java虚拟机-高效并发》读书笔记
    ConcurrentHashMap源码分析
    web前端性能调优(二)
    由自动装箱和拆箱引发我看Integer源码
    阅读《effective java-第17条》遇到的问题解决与分享
  • 原文地址:https://www.cnblogs.com/weiweixiang/p/10077257.html
Copyright © 2011-2022 走看看