精华内容
下载资源
问答
  • 用MakeQRBarcode.dll生成二维码是否有字数限制?超过120字符数的时候,生成的二维码感觉不是太稳定,有时生成的二维码扫出来是空白的,但又不是绝对,偶尔生成180多个字符的二维码扫描又正常,现在没摸透它到底是...
  • filePostfix 生成二维码图片的格式:png,jpeg,gif等格式 * @param format qrcode码的生成格式 * @param width 图片宽度 * @param height 图片高度 * @param hints */ public void encode ...
    /**
     * 
     */
    package com.b510.qrcode;
    
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.IOException;
    import java.util.Hashtable;
    import java.util.Map;
    
    import javax.imageio.ImageIO;
    
    import com.google.zxing.BarcodeFormat;
    import com.google.zxing.BinaryBitmap;
    import com.google.zxing.DecodeHintType;
    import com.google.zxing.EncodeHintType;
    import com.google.zxing.LuminanceSource;
    import com.google.zxing.MultiFormatReader;
    import com.google.zxing.MultiFormatWriter;
    import com.google.zxing.ReaderException;
    import com.google.zxing.Result;
    import com.google.zxing.Writer;
    import com.google.zxing.WriterException;
    import com.google.zxing.client.j2se.BufferedImageLuminanceSource;
    import com.google.zxing.common.BitMatrix;
    import com.google.zxing.common.HybridBinarizer;
    import com.google.zxing.oned.CodaBarWriter;
    import com.google.zxing.oned.Code128Writer;
    import com.google.zxing.oned.Code39Writer;
    import com.google.zxing.oned.EAN13Writer;
    import com.google.zxing.oned.EAN8Writer;
    import com.google.zxing.oned.ITFWriter;
    import com.google.zxing.oned.UPCAWriter;
    import com.google.zxing.pdf417.encoder.PDF417Writer;
    import com.google.zxing.qrcode.QRCodeWriter;
    
    /**
     * 利用zxing开源工具生成二维码QRCode
     * 
     * @date 2012-10-26
     * @author xhw
     * 
     */
    public class QRCode {
        private static final int BLACK = 0xff000000;
        private static final int WHITE = 0xFFFFFFFF;
    
        /**
         * @param args
         */
        public static void main(String[] args) {
            QRCode test = new QRCode();
    
            /**
             * 在com.google.zxing.MultiFormatWriter类中,定义了一些我们不知道的码,二维码只是其中的一种<br>
             * public BitMatrix encode(String contents,
                              BarcodeFormat format,
                              int width, int height,
                              Map<EncodeHintType,?> hints) throws WriterException {
                Writer writer;
                switch (format) {
                  case EAN_8:
                    writer = new EAN8Writer();
                    break;
                  case EAN_13:
                    writer = new EAN13Writer();
                    break;
                  case UPC_A:
                    writer = new UPCAWriter();
                    break;
                  case QR_CODE:
                    writer = new QRCodeWriter();
                    break;
                  case CODE_39:
                    writer = new Code39Writer();
                    break;
                  case CODE_128:
                    writer = new Code128Writer();
                    break;
                  case ITF:
                    writer = new ITFWriter();
                    break;
                  case PDF_417:
                    writer = new PDF417Writer();
                    break;
                  case CODABAR:
                    writer = new CodaBarWriter();
                    break;
                  default:
                    throw new IllegalArgumentException("No encoder available for format " + format);
                }
                return writer.encode(contents, format, width, height, hints);
              }
    
             */
            String filePostfix="png";
            File file = new File("C://test_QR_CODE."+filePostfix);
            test.encode("helloworld,I'm Hongten.welcome to my zone:http://www.cnblogs.com/hongtenhelloworld,I'm Hongten.welcome to my zone:http://www.cnblogs.com/hongtenhelloworld,I'm Hongten.welcome to my zone:http://www.cnblogs.com/hongtenhelloworld,I'm Hongten.welcome to my zone:http://www.cnblogs.com/hongtenhelloworld,I'm Hongten.welcome to my zone:http://www.cnblogs.com/hongtenhelloworld,I'm Hongten.welcome to my zone:http://www.cnblogs.com/hongtenhelloworld,I'm Hongten.welcome to my zone:http://www.cnblogs.com/hongtenhelloworld,I'm Hongten.welcome to my zone:http://www.cnblogs.com/hongtenhelloworld,I'm Hongten.welcome to my zone:http://www.cnblogs.com/hongtenhelloworld,I'm Hongten.welcome to my zone:http://www.cnblogs.com/hongtenhelloworld,I'm Hongten.welcome to my zone:http://www.cnblogs.com/hongtenhelloworld,I'm Hongten.welcome to my zone:http://www.cnblogs.com/hongtenhelloworld,I'm Hongten.welcome to my zone:http://www.cnblogs.com/hongtenhelloworld,I'm Hongten.welcome to my zone:http://www.cnblogs.com/hongtenhelloworld,I'm Hongten.welcome to my zone:http://www.cnblogs.com/hongtenhelloworld,I'm Hongten.welcome to my zone:http://www.cnblogs.com/hongtenhelloworld,I'm Hongten.welcome to my zone:http://www.cnblogs.com/hongtenhelloworld,I'm Hongten.welcome to my zone:http://www.cnblogs.com/hongtenhelloworld,I'm Hongten.welcome to my zone:http://www.cnblogs.com/hongtenhelloworld,I'm Hongten.welcome to my zone:http://www.cnblogs.com/hongtenhelloworld,I'm Hongten.welcome to my zone:http://www.cnblogs.com/hongtenhelloworld,I'm Hongten.welcome to my zone:http://www.cnblogs.com/hongtenhelloworld,I'm Hongten.welcome to my zone:http://www.cnblogs.com/hongtenhelloworld,I'm Hongten.welcome to my zone:http://www.cnblogs.com/hongtenhelloworld,I'm Hongten.welcome to my zone:http://www.cnblogs.com/hongtenhelloworld,I'm Hongten.welcome to my zone:http://www.cnblogs.com/hongtenhelloworld,I'm Hongten.welcome to my zone:http://www.cnblogs.com/hongtenhelloworld,I'm Hongten.welcome to my zone:http://www.cnblogs.com/hongtenhelloworld,I'm Hongten.welcome to my zone:http://www.cnblogs.com/hongtenhelloworld,I'm Hongten.welcome to my zone:http://www.cnblogs.com/hongtenhelloworld,I'm Hongten.welcome to my zone:http://www.cnblogs.com/hongtenhelloworld,I'm Hongten.welcome to my zone:http://www.cnblogs.com/hongtenhelloworld,I'm Hongten.welcome to my zone:http://www.cnblogs.com/hongtenhelloworld,I'm Hongten.welcome to my zone:http://www.cnblogs.com/hongtenhelloworld,I'm Hongten.welcome to my zone:http://www.cnblogs.com/hongtenhelloworld,I'm Hongten.welcome to my zone:http://www.cnblogs.com/hongtenhelloworld,I'm Hongten.welcome to my zone:http://www.cnblogs.com/hongtenhelloworld,I'm Hongten.welcome to my zone:http://www.cnblogs.com/hongtenhelloworld,I'm Hongten.welcome to my zone:http://www.cnblogs.com/hongtenhelloworld,I'm Hongten.welcome to my zone:http://www.cnblogs.com/hongtenhelloworld,I'm Hongten.welcome to my zone:http://www.cnblogs.com/hongtenhelloworld,I'm Hongten.welcome to my zone:http://www.cnblogs.com/hongtenhelloworld,I'm Hongten.welcome to my zone:http://www.cnblogs.com/hongtenhelloworld,I'm Hongten.welcome to my zone:http://www.cnblogs.com/hongtenhelloworld,I'm Hongten.welcome to my zone:http://www.cnblogs.com/hongtenhelloworld,I'm Hongten.welcome to my zone:http://www.cnblogs.com/hongtenhelloworld,I'm Hongten.welcome to my zone:http://www.cnblogs.com/hongten", file,filePostfix, BarcodeFormat.QR_CODE, 5000, 5000, null);
            test.decode(file);
        }
    
        /**
         *  生成QRCode二维码<br> 
         *  在编码时需要将com.google.zxing.qrcode.encoder.Encoder.java中的<br>
         *  static final String DEFAULT_BYTE_MODE_ENCODING = "ISO8859-1";<br>
         *  修改为UTF-8,否则中文编译后解析不了<br>
         * @param contents 二维码的内容
         * @param file 二维码保存的路径,如:C://test_QR_CODE.png
         * @param filePostfix 生成二维码图片的格式:png,jpeg,gif等格式
         * @param format qrcode码的生成格式
         * @param width 图片宽度
         * @param height 图片高度
         * @param hints
         */
        public void encode(String contents, File file,String filePostfix, BarcodeFormat format, int width, int height, Map<EncodeHintType, ?> hints) {
            try {
                BitMatrix bitMatrix = new MultiFormatWriter().encode(contents, format, width, height);
                writeToFile(bitMatrix, filePostfix, file);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        /**
         * 生成二维码图片<br>
         * 
         * @param matrix
         * @param format
         *            图片格式
         * @param file
         *            生成二维码图片位置
         * @throws IOException
         */
        public static void writeToFile(BitMatrix matrix, String format, File file) throws IOException {
            BufferedImage image = toBufferedImage(matrix);
            ImageIO.write(image, format, file);
        }
    
        /**
         * 生成二维码内容<br>
         * 
         * @param matrix
         * @return
         */
        public static BufferedImage toBufferedImage(BitMatrix matrix) {
            int width = matrix.getWidth();
            int height = matrix.getHeight();
            BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
            for (int x = 0; x < width; x++) {
                for (int y = 0; y < height; y++) {
                    image.setRGB(x, y, matrix.get(x, y) == true ? BLACK : WHITE);
                }
            }
            return image;
        }
    
        /**
         * 解析QRCode二维码
         */
        @SuppressWarnings("unchecked")
        public void decode(File file) {
            try {
                BufferedImage image;
                try {
                    image = ImageIO.read(file);
                    if (image == null) {
                        System.out.println("Could not decode image");
                    }
                    LuminanceSource source = new BufferedImageLuminanceSource(image);
                    BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));
                    Result result;
                    @SuppressWarnings("rawtypes")
                    Hashtable hints = new Hashtable();
                    //解码设置编码方式为:utf-8
                    hints.put(DecodeHintType.CHARACTER_SET, "utf-8");
                    result = new MultiFormatReader().decode(bitmap, hints);
                    String resultStr = result.getText();
                    System.out.println("解析后内容:" + resultStr);
                } catch (IOException ioe) {
                    System.out.println(ioe.toString());
                } catch (ReaderException re) {
                    System.out.println(re.toString());
                }
            } catch (Exception ex) {
                System.out.println(ex.toString());
            }
        }
    }
    

    所需的zxing的jar包已经上传;

    展开全文
  • 支付宝限制了一天二维码的生成数量.在这之间简直是好用得不要不要得.但是突然间支付宝爸爸说.你搞那么多二维码干啥.还备注...一天给你20张够不够? 于是乎一瞬间哀鸿遍野.有得同学有先见之明,生...

    支付宝收款的几种方式:

    1. 通过xposed 设置金额/备注.然后可以得到一张二维码.这是传统的方式.
    2. 通过支付宝的接口,自己拼接字符串.然后根据字符串生成一个二维码对于

    对于传统方式.支付宝限制了一天二维码的生成数量.在这之间简直是好用得不要不要得.但是突然间支付宝爸爸说.你搞那么多二维码干啥.还备注...一天给你20张够不够?

    于是乎一瞬间哀鸿遍野.有得同学有先见之明,生成好的二维码都存起来了.有存货,现在还可以拿出来用.但是没有存货的怎么办?

    第二种方式,就出现了,转账码:

    转账码也有多种途径

    alipays://platformapi/startapp?appId=09999988&actionType=toAccount&goBack=NO&amount=1.00&userId=2088802397828744&memo=hello

     

    自己拼接转账码,这种方式好用,方便,生成简单.老少皆宜,同嫂无欺,但是用户扫码之后.发现可编辑的.金额还可以改.备注也可以改.能改?用户别那么傻,改了你就会掉单.嗯程序员都是这么认为的.哪个**会去改啊.就这么用把.好上线吧.过了几天看看数据里,咦掉单了.咦怎么备注都是商品?卧槽.用户吧备注删了.!!! 这把轮到自己傻眼了吧 于是,最后一种方式,堪称完美 既能生成二维码,金额备注还是锁死的,用户还不能修改,一下子什么都解决了.

    <script>
    function returnApp() {
        AlipayJSBridge.call("exitApp")
    }
    
    function ready(a) {
        window.AlipayJSBridge ? a && a() : document.addEventListener("AlipayJSBridgeReady", a, !1)
    }
    ready(function() {
        try {
            var a = {
                actionType: "scan",
                u: "2088002357544150",
                a: "10",
                m: "hello",
                biz_data: {
                    s: "money",
                    u: "2088002357544150",
                    a: "10",
                    m: "hello"
                }
            }
        } catch (b) {
            returnApp()
        }
        AlipayJSBridge.call("startApp", {
            appId: "20000123",
            param: a
        }, function(a) {})
    });
    document.addEventListener("resume", function(a) {
        returnApp()
    });
    </script>

    文章转自https://my.oschina.net/xinyu126/blog/2963198

    【转】支付宝 二维码/转账码/生成方式,突破二维码生成数量的限制

    标签:二维码生成   span   UNC   map   mount   action   二维码   pos   net   

    原文地址:https://www.cnblogs.com/wangjiayuan/p/10063258.html

    转载于:https://www.cnblogs.com/zhiji6/p/10400028.html

    展开全文
  • 二维码

    2019-09-21 23:24:01
    因此,在某种程度上限制了二维条码的应用。 为了解决早期几种二维码在使用中出现的问题,拓宽二维码的应用,后期研制的二维码PDF417、 Data Matrix、QR Code等都采用了Reed—Solomon纠错技术,从而为二维条码在各...

      二维条码是指在一维条码的基础上扩展出另一维具有可读性的条码,使用黑白矩形图案表示二进制数据,被设备扫描后可获取其中所包含的信息。一维条码的宽度记载着数据,而其长度没有记载数据。二维条码的长度、宽度均记载着数据。二维条码有一维条码没有的“定位点”和“容错机制”。容错机制在即使没有辨识到全部的条码、或是说条码有污损时,也可以正确地还原条码上的资讯。

        二维条码的编码是指将源数据信息流转化为数据码字及根据数据码字流生成纠错码字的过程;码字流的二维条码符号表示是指在完成二维条码的编码之后,按照特定的规则将码字流用相应的二维条码符号表示的过程。

         二维条码的编码

    二维条码的编码包括两部分内容:一是将数据信息流通过一定的数据压缩模式转换成数据码字;二是根据Reed—Solomon错误控制码算法及数据纠错要求,在数据码字的基础上生成相应纠错码字。 

        数据信息的编码 

    二维条码对物品的描述,是通过一定的数据信息转化方法,将描述物品的数字、字母、符号、文字、图像等信息转化为数据码字流,然后用二维条码表示来实现,对不同的数据息,每一码制提供了相应的数据压缩模式来实现数据信息的转换,其主要的数据压缩模式包括:数字压缩模式、文本压缩模式(字母 压缩模式)、字节压缩模式。数字压缩模式主要用于对数字信息的表示;文本压缩模式(字母压缩模式)主要用于对ASCⅡ字符集及ASCⅡ扩展字符集中字:符信息的表示,也可用于对数字信息0~9的表示,但会降低表示效率;字节压缩模式主要用于对文字信息,如汉字、图像信息的表示,也能用于表示数字、字母信息,但会大大降低表示效率。不同码制表示信息的范围及方法各有特色。 

       二维条码的纠错

      一维条码的应用建立在这样一个基础上,那就是识读时拒读(即读不出)要比误读(读错)好。因此,一维条码通常同其表示的信息一同印刷出来。当条码受到损坏(如污染、脱墨等)时,可以通过键盘录入 代替扫描条码。鉴于以上原则,一维条码没有考虑到条码本身的纠错功能,尽管引入了校验字符的概念, 但仅限于防止读错。 早期出现的Code 49、Code 16K等几种二维码,在其信息表示密度方面与一维条码相比有了很大提 高,但由于是在一维条码的基础上生成的,没有纠错功能。人们在使用中发现,尽管早期开发的二维条码 能表示大量的数据信息,但由于条高的截短,使二维条码因质量问题出现不可识读的概率大大增加,一 旦不能识读,则变得毫无意义。因此,在某种程度上限制了二维条码的应用。 为了解决早期几种二维码在使用中出现的问题,拓宽二维码的应用,后期研制的二维码PDF417、 Data Matrix、QR Code等都采用了Reed—Solomon纠错技术,从而为二维条码在各领域的广泛使用奠定 了基础。 

      在二维条码的识读过程中,通常出现两种识读错误:一种是拒读错误,即在确定位置上的符号字符 的丢失或不可译码;另一种是替代错误,即在随机位置上的符号字符的错误译码。用一个纠错码字可恢复一个拒读错误,用两个纠错码字可纠正一个替代错误。例如QR Code符号,如果由于一个缺陷导致某一深色模块变成浅色模块或相反某一浅色模块变成深色模块,从而导致受影 响的符号错误地译解为另一个符号字符,这种数据替代错误,由于既要确定错误码字的位置,又要对错 误码字进行纠正,因此,需要两个纠错码字来纠正它。 可纠正的替代和拒读错误数量由下式给出:                                                    P+2t≤d-P 

    其中:P一拒读错误数; t替代错误数; d一纠错码字数; P一错误译码保护码字数。 

     

         纠错码字的生成 

    1)纠错等级的选择
    在计算纠错码字前,首先应根据使用环境及不同纠错等级所对应的纠错能力,合理地选择满足使用要求的纠错等级。 

    2)纠错码字的计算
    然后根据所选定的纠错等级和数据码字,用Reed—Solomon错误控制码算法计算相对应的纠错码

    字,计算步骤如下:

        二维条码符号表示
    二维条码的符号表示是指在完成二维条码的编码,即数据信息流转换为码字流之后,将码字流用相应的二维条码符号进行表示的过程。根据二维条码符号的结构特点及生成原理,通常将二维条码分为行排式二维条码矩阵式二维条码两类。具有代表性的行排式二维条码有四一七条码、Code 49、Code16K等。具有代表性的矩阵式二维码有QRCode、Data Matrix、Codeone、Maxi code等。

       对行排式二维条码,由于它是在一维条码的基础上产生的,它的符号字符的结构与一维条码符号字符的结构相同,由不同宽窄的条空组成,属模块组合型。

       行排式二维条码在符号字符设计、符号的基本构成、识读方式等方面,承继了一维条码的特点,符号识读设备与符号生成与一维条码兼容,但与一维条码不同的是,由于它是一个多行结构,从符号结构上要求增加行标识功能。行排式二维码在行标识上,不同码制采取了不同的行标识方法。

      矩阵式二维条码符号在结构形体及元素排列上与代数矩阵具有相似的特征。它以计算机图像处理技术为基础,每一矩阵二维条码符号结构的共同特征是均由特定的符号功能图形及分布在矩阵元素位置上表示数据信息的图形模块(如正方形、圆、正多边形等图形模块)构成。用深色模块单元表示二进制的"1",用浅色模块单元表示二进制的“0”。数据码字流通过分布在矩阵元素位置上的单元模块的不同组合来表示。具有代表性的有QRCode、DataMatrix、Code one、MaxiCode等矩阵二维码。

       矩阵式二维码是在行排式二维条码不能满足某些应用领域对符号小型化要求及需要表示更多信息量的条件下产生的。它是建立在计算机图像处理技术、组合编码原理基础上的一种新型图形符号自动识读处理码制。其符号字符由若干个深色或浅色模块按规律排列构成。大多数矩阵二维条码的符号字符由8个模块按特定规律排列构成。
    对Data Matrix码,ECC200符号其符号字:符由8个深色或浅色正方形模块构成,每一模块表示一个二进制位1或0,通常符号字符中每一模块按从左到右,从上到下的顺序进行排列。

                     

      每一种矩阵二维码符号都有其独特的功能图形,用于符号标识,确定符号的位置、尺寸及对符号模块的校正等。

     

      二维码安全问题

    二维码藏病毒 扫一扫瞬间被盗 http://business.sohu.com/20140304/n395997236.shtml

    转载于:https://www.cnblogs.com/yongwangzhiqian/p/3580582.html

    展开全文
  • 二维码原理

    千次阅读 2015-02-05 10:42:10
    二维码的基础原理是什么?

    骂人

    二维码的基础原理是什么?

    二维条码是指在一维条码的基础上扩展出另一维具有可读性的条码,使用黑白矩形图案表示二进制数据,被设备扫描后可获取其中所包含的信息。一维条码的宽度记载着数据,而其长度没有记载数据。二维条码的长度、宽度均记载着数据。二维条码有一维条码没有的“定位点”和“容错机制”。容错机制在即使没有辨识到全部的条码、或是说条码有污损时,也可以正确地还原条码上的信息。二维条码的种类很多,不同的机构开发出的二维条码具有不同的结构以及编写、读取方法。

    堆叠式/行排式二维条码,如,Code 16K、Code 49、PDF417(如右图)等。

     

    矩阵式二维码,最流行莫过于QR CODE,二维码的名称是相对与一维码来说的,比如以前的条形码就是一个“一维码”。它的优点有:二维码存储的数据量更大;可以包含数字、字符,及中文文本等混合内容;有一定的容错性(在部分损坏以后可以正常读取);空间利用率高等。

     

    二维码编码过程

     

    1、数据分析:确定编码的字符类型,按相应的字符集转换成符号字符; 选择纠错等级,在规格一定的条件下,纠错等级越高其真实数据的容量越小。

     

    2、数据编码:将数据字符转换为位流,每8位一个码字,整体构成一个数据的码字序列。其实知道这个数据码字序列就知道了二维码的数据内容。

    小面小草就用一个案例带你了解二维码的编码过程,以对数据01234567编码为例

    1)分组:012 345 67
    2)转成二进制:012→0000001100      345→0101011001     67 →1000011
    3)转成序列:0000001100 0101011001 1000011
    4)字符数 转成二进制:8→0000001000
    5)加入模式指示符(上图数字)0001:0001 0000001000 0000001100 0101011001 1000011
    对于字母、中文、日文等只是分组的方式、模式等内容有所区别,基本方法是一致的。二维码虽然比起一维条码具有更强大的信息记载能力,但也是有容量限制,通过下面这个表格小草带你了解二维码的容量到底有多大。

     

    3、纠错编码:按需要将上面的码字序列分块,并根据纠错等级和分块的码字,产生纠错码字,并把纠错码字加入到数据码字序列后面,成为一个新的序列。在二维码规格和纠错等级确定的情况下,其实它所能容纳的码字总数和纠错码字数也就确定了,比如:版本10,纠错等级时H时,总共能容纳346个码字,其中224个纠错码字。就是说二维码区域中大约1/3的码字时冗余的。对于这224个纠错码字,它能够纠正112个替代错误(如黑白颠倒)或者224个据读错误(无法读到或者无法译码),这样纠错容量为:112/346=32.4%

     

    4、构造最终数据信息:在规格确定的条件下,将上面产生的序列按次序放如分块中按规定把数据分块,然后对每一块进行计算,得出相应的纠错码字区块,把纠错码字区块按顺序构成一个序列,添加到原先的数据码字序列后面。如:D1, D12, D23, D35, D2, D13, D24, D36, … D11, D22, D33, D45, D34, D46, E1, E23,E45, E67, E2, E24, E46, E68,…



    5 、构造矩阵:在构造矩阵之前,我们先来了解一个普通二维码的基本结构。

     

        位置探测图形、位置探测图形分隔符、定位图形:用于对二维码的定位,对每个QR码来说,位置都是固定存在的,只是大小规格会有所差异;
        校正图形:规格确定,校正图形的数量和位置也就确定了;
        格式信息:表示改二维码的纠错级别,分为L、M、Q、H;
        版本信息:即二维码的规格,QR码符号共有40种规格的矩阵(一般为黑白色),从21×21(版本1),到177×177(版本40),每一版本符号比前一版本 每边增加4个模块。
        数据和纠错码字:实际保存的二维码信息,和纠错码字(用于修正二维码损坏带来的错误)。

    了解了二维码的基本结构后,将探测图形、分隔符、定位图形、校正图形和码字模块放入矩阵中,并把上面的完整序列填充到相应规格的二维码矩阵的区域中。

    6、掩膜:将掩摸图形用于符号的编码区域,使得二维码图形中的深色和浅色(黑色和白色)区域能够比率最优的分布。

     

    7、格式和版本信息:生成格式和版本信息放入相应区域内。版本7-40都包含了版本信息,没有版本信息的全为0。二维码上两个位置包含了版本信息,它们是冗余的。版本信息共18位,6X3的矩阵,其中6位时数据为,如版本号8,数据位的信息时 001000,后面的12位是纠错位。

     

     

    再见

    展开全文
  • 二维码 PDF417

    千次阅读 2013-01-17 13:41:26
    则建议不同的字数所适用的错误纠正等级。 最大储存量 (错误纠正等级为 0 )为每个符号表示 1850 个大小写字母或 2710 个数字或 1108 个字节 表 1 可存放资料量与错误纠正等级对照表 ...
  • 二维码生成原理及解析代码

    万次阅读 多人点赞 2017-12-18 22:35:06
    二维码生成原理及解析代码 自从大街小巷的小商小贩都开始布满了腾讯爸爸和阿里爸爸的二维码之后,我才感觉到我大天朝共享支付的优越性。最近毕业论文写的差不多了,在入职之前多学一些东西也是好的。这里秉着好奇心...
  • 二维码生成原理

    2020-03-07 15:08:43
    二维码生成原理及解析代码 自从大街小巷的小商小贩都开始布满了腾讯爸爸和阿里爸爸的二维码之后,我才感觉到我大天朝共享支付的优越性。最近毕...
  • Android二维码原理与优化方向

    万次阅读 多人点赞 2020-03-03 16:37:31
    做过Android的二维码扫描的童鞋可能会遇到过,很多二维码识别不了,或者识别速度慢。一般造成这个识别不出来的原因,大概以下几点: Android手机配置不一样,手机像素高低也有不同,有的手机还不支持自动对焦 环境...
  • 最近因项目需求生成二维码,由于只需要生成二维码功能,自己就花了点时间去提取Zxing二维码的生成功能。有需求的伙伴拿去使用吧,可运行,也可以直接打包jar文件使用
  • 二维码 1.什么是二维码? 二维条形码,最早发明于日本,它是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的,在代码编制上巧妙地利用构成计算机内部逻辑基础的...
  • 字数 2786 阅读 19186评论 46喜欢 100 序言 前面我们已经调到过怎么制作二维码,在我们能够生成二维码之后,如何对二维码进行扫描呢? 在iOS7之前,大部分应用中使用的二维码扫描是第三方的扫描框架
  • 二维码又称QR Code,是一个在移动设备上非常流行的编码方式。 这一篇博客里将从原理和艺术二维码生成的角度来谈一谈,先给大家看看最终的效果: 二维码原理 二维码的前身是超市购物时的条形码(一维码): 但是很明显...
  • 二维码的生成原理

    千次阅读 2017-10-19 10:47:07
    二维码的基础原理是什么? 二维条码是指在一维条码的基础上扩展出另一维具有可读性的条码,使用黑白矩形图案表示二进制数据,被设备扫描后可获取其中所包含的信息。一维条码的宽度记载着数据,而其长度没有记载数据...
  • QRCode二维码字符长度问题

    万次阅读 2014-05-10 12:02:37
    网上的二维码例子都比较好,不过就是没有比较详细讲解关于QRCode二维码生成的规则和要点。例如:为什么要在生成二维码的时候,判断字符集的长度要小于128。要知道二维码信息容量大:可容纳多达1850个大写字母或2710...
  • 一方面, 我自认为是国内“钻研”二维码比较早的一个人了,大学时也自己业余开发了一款Android App“爱购扫描”,主要做条形码比价和二维码扫描。而在后来的工作中,依旧会接触到二维码的利用,让
  • 二维码(QR Code)的生成原理及解析

    万次阅读 多人点赞 2018-09-28 17:00:26
    二维码生成原理及解析代码 自从大街小巷的小商小贩都开始布满了腾讯爸爸和阿里爸爸的二维码之后,我才感觉到我大天朝共享支付的优越性。最近毕业论文写的差不多了,在入职之前多学一些东西也是好的。这里秉着好奇心...
  • 二维码的基础原理

    2018-03-08 18:47:00
    二维码虽然比起一维条码具有更强大的信息记载能力,但也是有容量限制,通过下面这个表格小草带你了解二维码的容量到底有多大。 3、纠错编码: 按需要将上面的码字序列分块,并根据纠错等级和分块的码字,产生...
  • iOS,QRCord(矩阵二维码)

    2017-03-30 18:56:00
    1.二维码及其原理介绍 2.二维码生成 3.二维码解析 二维码及其原理介绍 二维条码是指在一维条码的基础上扩展出另一维具有可读性的条码,使用黑白矩形图案表示二进制数据,被设备扫描后可获取其中所包含的信息。一...
  • 二维码简介和容错率的问题

    千次阅读 2018-06-23 14:56:37
    二维码简介和容错率的问题二维码容错等级2013-01-31浏览次数:1,316 次错误校正损坏,但仍然解码的二维码水平使用的Reed-Solomon纠错算法。越高误差校正水平,较少的存储容量。下表列出了在每一个的四个层次的近似...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 547
精华内容 218
关键字:

二维码字数限制