• (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");
        }

    测试图像如下:

            

    三、解码

    点击查看

  • 相关阅读:
    【python-leetcode295-双堆】数据流的中位数
    python数组二分查找算法bisect
    python堆队列算法heapq
    python中的容器序列类型collections
    step(iter)、epoch、batch size之间的关系
    【python-leetcode437-树的深度遍历】路径总和Ⅲ
    Java 代码实现POST/GET请求
    .NET 按格式导出txt
    java fastjson解析json字符串
    Java 对象转XML xStream 别名的使用 附下载方式
  • 原文地址:https://www.cnblogs.com/weiweixiang/p/10077257.html
Copyright © 2020-2023  润新知