精华内容
下载资源
问答
  • 二维码

    2019-12-15 19:05:16
    二维码 1. 二维码的分类 线性堆叠式二维码 矩阵式二维码 邮政码 线性堆叠式二维码: ​ 建立在一维条形码基础之上,按需要堆积成两行或者多行。 ​ 实现:PDF417、Ultracode、Code 49、Code16K 矩阵式二维码: ​ ...

    二维码

    1. 二维码的分类

    • 线性堆叠式二维码
    • 矩阵式二维码
    • 邮政码
    线性堆叠式二维码:

    ​ 建立在一维条形码基础之上,按需要堆积成两行或者多行。

    ​ 实现:PDF417、Ultracode、Code 49、Code16K

    矩阵式二维码:

    ​ 在一个矩形空间通过黑、白像素在矩阵中的不同分布进行编码。在矩阵相应元素位置上,用点(方点、原点或者其他图形)的出现表示二进制 1, 点的不出现表示二进制的 0 。

    ​ 实现:Data Matrix、Maxi Code、Aztec Code、QR Code、Vericode

    邮政码:

    ​ 通常通过不同长度的条进行编码,主要用于邮件编码。

    ​ 实现:POSTNET、BPO 4-STATE

    2. 二维码的优缺点

    优点:

    ​ 高密度编码,信息容量大(500 多汉字)、编码范围广、容错能力强、编译可靠性高、可引入加密措施、成本低,一直做,持久耐用

    缺点:

    ​ 二维码技术成为手机病毒、钓鱼网站传播的新渠道、信息泄露

    3. QR Code

    目前流行的三大国际标准:

    ​ PDF417:不支持中文

    ​ DM:专利未公开,需要支付专利费用

    ​ QR Code:专利公开,支持中文

    QR Code 的纠错能力:

    • L 级别:约可纠错 7% 的数据码字
    • M 级别:约可纠错 15% 的数据码字
    • Q 级别:约可纠错 25% 的数据码字
    • H 级别:约克纠错 30% 的数据码字
    生成二维码的方法
    • java 借助第三方的 jar 包,如:zxing(谷歌)、QRCode.jar
    • javascript 使用,jquery.qrcode.js

    4. 实例

    后端使用 zxing 生成二维码:

    导入 jar 包:

    <dependency>
        <groupId>com.google.zxing</groupId>
        <artifactId>core</artifactId>
        <version>3.3.0</version>
    </dependency>
    
    <dependency>
        <groupId>com.google.zxing</groupId>
        <artifactId>javase</artifactId>
        <version>3.3.0</version>
    </dependency>
    

    生成二维码代码:

    package cn.nianzuochen.qrcode;
    
    import com.google.zxing.BarcodeFormat;
    import com.google.zxing.EncodeHintType;
    import com.google.zxing.MultiFormatWriter;
    import com.google.zxing.WriterException;
    import com.google.zxing.client.j2se.MatrixToImageWriter;
    import com.google.zxing.common.BitMatrix;
    import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
    
    import java.io.File;
    import java.io.IOException;
    import java.nio.file.Path;
    import java.util.HashMap;
    
    // 生成 二维码
    public class CreateQRCode {
        public static void main(String[] args) {
            int width = 300;
            int height = 300;
    
            String format = "jpg";
            String content = "http://www.baidu.com";
    
            // 定义二维码参数
            HashMap hints = new HashMap();
            // 确定字符集的编码
            hints.put(EncodeHintType.CHARACTER_SET, "utf-8");
            // 确定纠错等级
            hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.M);
            // 设置边距
            hints.put(EncodeHintType.MARGIN, 2);
    
    
            try {
                // 确定内容,编码格式,宽,高,其他配置参数,获取二维码矩阵值
                BitMatrix bitMatrix = new MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE, width, height, hints);
                // 将生成的图片保存在指定路径下
                Path file = new File("F:/qrcode/image.jpg").toPath();
                MatrixToImageWriter.writeToPath(bitMatrix, format, file);
            } catch (WriterException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    

    解析二维码代码:

    package cn.nianzuochen.qrcode;
    
    import com.google.zxing.*;
    import com.google.zxing.client.j2se.BufferedImageLuminanceSource;
    import com.google.zxing.common.HybridBinarizer;
    
    import javax.imageio.ImageIO;
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.IOException;
    import java.util.HashMap;
    
    public class ReadQRCode {
        public static void main(String[] args) {
            // 读取二维码的对象
            MultiFormatReader formatReader = new MultiFormatReader();
            // 二维码存储位置
            File file = new File("F:/qrcode/image.jpg");
    
            try {
                // 读取图片信息
                BufferedImage image = ImageIO.read(file);
                // 获取二进制矩阵值
                BinaryBitmap binaryBitmap =
                        new BinaryBitmap(new HybridBinarizer(new BufferedImageLuminanceSource(image)));
                // 定义二维码参数
                HashMap hints = new HashMap();
                // 确定字符集的编码
                hints.put(EncodeHintType.CHARACTER_SET, "utf-8");
                // 解码
                Result result = formatReader.decode(binaryBitmap, hints);
                // 打印解码结果
                System.out.println("解析结果:" + result.toString());
                System.out.println("二维码格式类型:" + result.getBarcodeFormat());
                System.out.println("二维码文本内容:" + result.getText());
            } catch (IOException e) {
                e.printStackTrace();
            } catch (NotFoundException e) {
                e.printStackTrace();
            }
        }
    }
    
    前端使用 jquery-qrcode 生成

    github 地址:https://github.com/jeromeetienne/jquery-qrcode

    下载之后可以在里面找到 demo.html,所需要的是 jquery 和 jquery-qrcode 文件

    <html>
    <head>
    <title>Demo page</title>
    </head>
    <body>
        <div id="output"></div>
        <script type="text/javascript" src="../src/jquery-3.4.1.min.js"></script>
        <script type="text/javascript" src="../jquery.qrcode.min.js"></script>
        <script>
            jQuery(function(){
                jQuery('#output').qrcode({width: 64,height: 64,text: "www.baidu.com"});
            })
        </script>
        </body>
    </html>
    

    因为二维码的容错性很好,很多带 Logo 的二维码,这是利用了二维码容错性,使用 ps 等抠图或者 Java 绘图的类,对生成的图片进行二次处理的结果。

    创建个人电子名片,只需要将符合 VCard 规范(https://blog.csdn.net/xfyangle/article/details/58601585)的信息写入就可以。

    String content ="BEGIN:VCARD\n" +
                    "VERSION:2.1\n" +
                    "N:姓;名\n" +
                    "FN:姓名\n" +                       // 姓名
                    "NICKNAME:nickName\n" +             // 昵称
                    "ORG:公司;部门\n" +                 // 组织
                    "TITLE:职位\n" +                    // 职位
                    "TEL;WORK;VOICE:电话1\n" +
                    "TEL;WORK;VOICE:电话2\n" +
                    "TEL;HOME;VOICE:电话1\n" +
                    "TEL;HOME;VOICE:电话2\n" +
                    "TEL;CELL;VOICE:213231231\n" +      // 移动电话
                    "TEL;PAGER;VOICE:0775\n" +          // 电话
                    "TEL;WORK;FAX:传真\n" +
                    "TEL;HOME;FAX:传真\n" +
                    "ADR;WORK:;;单位地址:深圳;广东;43000;国家\n" +
                    "ADR;HOME;POSTAL;PARCEL:;;街道地址;深圳;广东;43000;中国\n" +
                    "URL:网址\n" +
                    "EMAIL;PREF;INTERNET:邮箱地址\n" +
                    "X-QQ:11111111\n" +
                    "END:VCARD";
    
    展开全文
  • iOS生成三种类型二维码

    千次阅读 2018-02-06 17:49:37
    系统二维码主要通过CIFilter的对象来完成, 当然首先我们需要先导入这个类所在的框架: #import 之后只需要实例化一个CIFilter的对象, 给该对象添加数据后生成二维码即可。 - (void)touchesBegan:...

    系统二维码主要通过CIFilter的对象来完成, 当然首先我们需要先导入这个类所在的框架:

    #import <CoreImage/CoreImage.h>

    之后只需要实例化一个CIFilter的对象, 给该对象添加数据后生成二维码即可。

    - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
        // 1. 创建一个二维码滤镜实例(CIFilter)
        CIFilter *filter = [CIFilter filterWithName:@"CIQRCodeGenerator"];
        // 滤镜恢复默认设置
        [filter setDefaults];
        
        // 2. 给滤镜添加数据
        NSString *string = @"are you ok?"
        NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding];
        // 使用KVC的方式给filter赋值
        [filter setValue:data forKeyPath:@"inputMessage"];
        
        // 3. 生成二维码
        CIImage *image = [filter outputImage];
        
        // 4. 显示二维码
        self.imageView.image = [UIImage imageWithCIImage:image];
    }
    
    
    二维码中的数据可以是字符串和URL两种类型, 如果我们想要生成URL的二维码, 只需要把字符串替换为一个URL字符串即可:

    - (void)createCode:(NSString *)string

    {

        // 1. 创建一个二维码滤镜实例(CIFilter)

        CIFilter *filter = [CIFilter filterWithName:@"CIQRCodeGenerator"];

        // 滤镜恢复默认设置

        [filter setDefaults];

        

        // 2. 给滤镜添加数据

        

        NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding];

        

        [filter setValue:data forKeyPath:@"inputMessage"];

        

        // 3. 生成二维码

        CIImage *ciimage = [filter outputImage];

        

        // 4. 显示二维码

        self.codeImg.image = [self createNonInterpolatedUIImageFormCIImage:ciimage withSize:180];

    }

    此外, 我们经常看到中间带有图片的二维码, 其实只需要在二维码的imageView上再添加一个imageView即可, 当然图片不能太大, 否则会导致扫描不到二维码中的信息

    但这时候生成的二维码会比较模糊, 只需要使用下面的方法来获得一个清晰的image, 之后只要把image添加到二维码的imageView上即可:

    /**

     *  根据CIImage生成指定大小的UIImage

     *

     *  @param image CIImage

     *  @param size  图片宽度以及高度

     */

    - (UIImage *)createNonInterpolatedUIImageFormCIImage:(CIImage *)image withSize:(CGFloat) size

    {

        CGRect extent = CGRectIntegral(image.extent);

        CGFloat scale = MIN(size/CGRectGetWidth(extent), size/CGRectGetHeight(extent));

        

        //1.创建bitmap;

        size_t width = CGRectGetWidth(extent) * scale;

        size_t height = CGRectGetHeight(extent) * scale;

        CGColorSpaceRef cs = CGColorSpaceCreateDeviceGray();

        CGContextRef bitmapRef = CGBitmapContextCreate(nil, width, height, 8, 0, cs, (CGBitmapInfo)kCGImageAlphaNone);

        CIContext *context = [CIContext contextWithOptions:nil];

        CGImageRef bitmapImage = [context createCGImage:image fromRect:extent];

        CGContextSetInterpolationQuality(bitmapRef, kCGInterpolationNone);

        CGContextScaleCTM(bitmapRef, scale, scale);

        CGContextDrawImage(bitmapRef, extent, bitmapImage);

        

        //2.保存bitmap到图片

        CGImageRef scaledImage = CGBitmapContextCreateImage(bitmapRef);

        CGContextRelease(bitmapRef);

        CGImageRelease(bitmapImage);

        return [UIImage imageWithCGImage:scaledImage];

    }







    展开全文
  • 二维码的营销模式哪些

    千次阅读 2017-06-15 13:43:14
    互联网的发展,智能手机的普及,出去吃个饭都是用二维码扫一扫。二维码加强了商家和消费者之间的互动和信息的传播。二维码营销也是商家的主要营销手段。那么二维码营销模式哪些呢?

      互联网的发展,智能手机的普及,出去吃个饭都是用二维码扫一扫。二维码加强了商家和消费者之间的互动和信息的传播。二维码营销也是商家的主要营销手段。那么二维码营销模式有哪些呢?


      1.网络社交类

      目前,网络社交类主要以微博和微信为代表。例如:微信中的二维码提供多种功能服务。带来更便捷、好玩的操作体验,也为用户创造了一个提高关注和营销的机会。

      2.服务提供类

      服务提供类的二维码范围比较广,比如:二维码营销为客户提供从票证检验到物品信息二维码化的一整套运营解决方案皆属此类。

      3.电商购物类

      依托二维码的移动电子商务平台将成为众多公司未来的核心业务,为商家商品制作、营销二维码,消费者扫描它之后登录其移动电子商务平台实现购买,这种模式必将催生出体量巨大的公司。

      4.应用工具类

      二维码的应用,可以分为主读和被读。

      被读类应用:是以手机等存储二维码作为电子交易或支付的凭证,可用于电子票务、消费打折等。

      主读类应用:是以安装识读二维码软件的手持工具,识读各种载体上的二维码,可用于查询信息、防伪溯源、购物付款、执法检查等。

      5.媒体阅读类

      由于二维码中可以包含极大的信息量,随着智能手机在日常生活的普及,Android和IOS智能手机的崛起,二维码扫描阅读,将改变人们阅读的习惯。众所周知,在手机上编辑网址十分费力,而使用二维码只要一拍就就可以进入相关阅读页,方便又快捷。

    展开全文
  • 扫描二维码

    2016-12-29 14:59:52
    二维码的理解

    网上一堆博客有源码,几乎都是用的ZXing,我就不重复造轮子了,这篇主要说一下我的理解

    想要源码应急的这有传送门:http://jingyan.baidu.com/article/eae07827a837b71fec5485b2.html

    夏安明的:http://blog.csdn.net/xiaanming/article/details/10163203

    鸿洋大神的:http://blog.csdn.net/guolin_blog/article/details/9526247/


    QRCodeActivity是上篇提到的蓝牙连接打印机打印二维码的activity 这个不谈


    QRCodeScanActivity  是进入扫描页面,调用摄像头,摄像头中间一个框.用来扫描二维码,是扫描的入口,

    主要函是这个函数,用到

    public void handleDecode(Result obj, Bitmap barcode) {
    		inactivityTimer.onActivity();
    		viewfinderView.drawResultBitmap(barcode);
    		playBeepSoundAndVibrate();
    		
    		if(bBack){
    			//返回扫描结果
    			 stringBundle.putString("value", obj.getText().toString());
    			 backIntent.putExtras(stringBundle);
    			 setResult(RESULT_OK, backIntent);
    			 finish();
    		}else{
    			//显示结果
    			Intent showActivityIntent = new Intent();
    
    			String text = obj.getText();
    			if(StringUtils.isNotEmpty(text)){
    				showActivityIntent.putExtra("text",text);
    				showActivityIntent.setClass(QRCodeScanActivity.this,QRResultActivity.class);
    				startActivity(showActivityIntent);
    			}else{
    				CommonUtil.showDialog("二维码解析内容为空,请输入有效的二维码!", ctx);
    			}
    		}

    text为返回结果.


    QRResultActivity 是得到返回扫描结果并的activity;这个不谈


    总结:其实是二维码只是一种数据的平面表现形式.

    例如:

    String A = "ABCDEFG";  ->A生成二维码(可以视作加密)->二维码A.

    String B = "http://www.google.com";  ->B生成二维码->二维码B.

    扫描二维码其实只是相当于解码,显示这个二维码里到底是啥


    那么问题来了:为什么QQ,微信扫完直接是页面呐?

    因为人家处理二维码数据的时候就是直接跳到webview处理的啊.

    你看到加载页面时候最上面的绿色小进度条了么?


    那你又问了,为什么我扫完的码都是网页啊?

    判定如果是网址类型,就打开URL,不是就显示该二维码信息就好.

    你打开的都是网页那是因为二维码里的信息都是网址的类型

    我打印的二维码用微信扫出来,就是一串String


    你又问了,你用微信扫出来的是string,你那二维码有毛用

    我APP打印的二维码凭啥用微信来扫?我自己扫!我业务需要二维码保密!你管得着么!


    记住,你扫描的每一个二维码都是一个网页,android杀软渣的不行,劫持嗅探样样不拦截,小心乱扫中毒哦..




    展开全文
  • 二维码 使用

    2017-10-08 13:47:54
    二维码,我们也称作QRCode,QR表示quick response即快速...二维码的使用我主要想分为两部分来给大家介绍,一部分就是二维码的生成,这里的知识点都很简单,还有一部分是二维码的识别,这里稍微麻烦一些,不过细心来做
  • 病毒感染用户数在下降 病毒传播渠道却越来越多样化 从国内的“暗云Ⅲ”病毒,到席卷全球的“WannaCry”敲诈勒索病毒,再到“Petya”恶性破坏性...超过1亿的手机用户感染过手机病毒,二维码已成为主流病毒渠道来源。 P
  • 二维码扫描

    千次阅读 2016-06-20 15:21:45
    二维码扫描,AVFoundation,ZBar,
  • 美化二维码

    2020-05-02 16:50:50
    上面两个二维码图片,扫码结果都是访问到同个页面,但是大多数使用二维码的地方,都是生成第一种样式,WC里的广告就是直接的例子: 很明显,第一种二维码点阵非常复杂,在某种复杂的环境下,如扫码角度大、...
  • 二维码浅析

    千次阅读 2014-03-05 11:31:13
    二维码又称QR Code,QR全称Quick Response,是一个近几年来移动设备上超流行的一种编码方式,它比传统的Bar Code条形码能存更多的信息,也能表示更多的数据类型:比如:字符,数字,日文,中文等等。这两天学习了...
  • 生成二维码

    2020-07-07 09:38:26
    今天做了个推广二维码的功能,主要依赖谷歌开源的core架包实现,推广可以使用链接或者二维码(实质上二维码就是携带了链接信息而已)。二维码相比链接好处在于方便不需要记住或者去复制粘贴链接,毕竟扫码已经很普遍...
  • 二维码 讲解

    千次阅读 2014-01-02 17:00:15
    二维码又称QR Code,QR全称Quick Response,是一个近几年来移动设备上超流行的一种编码方式,它比传统的Bar Code条形码能存更多的信息,也能表示更多的数据类型:比如:字符,数字,日文,中文等等。这两天学习了...
  • 二维码生成

    2018-12-17 14:04:22
    总结生成二维码的各种方法!
  • opencv 二维码定位

    千次阅读 多人点赞 2018-11-24 14:11:26
    下图为二维码的其中一个黑色正方形,二维码定位主要是根据这个正方形的位置进行定位识别 这个正方形提供了两个特征: 该正方形三个轮廓特征,因此我们可以找到一个符合该特征的轮廓,便可以节省许多操作。如一...
  • 二维码分类

    千次阅读 2020-09-29 14:37:14
    二维码分类 最近在做二维码解码的项目。用的是zxing库+VS2015+OPENCV3.4,网上说ZBAR库也ok; 概念: 二维条码/二维码(2-dimensional bar code)是用某种特定的几何图形按一定规律在平面(二位方向上)分布的黑白...
  •  而旅游景区作为吸引游客的主要途径和生产力,景区之间的竞争也是如火如荼。在这样的背景下景区也都愿意花费精力建设成为智能景区,大力建设智慧景区导览系统,智慧景区就这样进入了人们的视野,特别是二维码语音...
  • 目前2种类型二维码: 1、临时二维码,是过期时间的,最长可以设置为在二维码生成后的30天(即2592000秒)后过期,但能够生成较多数量。临时二维码主要用于帐号绑定等不要求二维码永久保存的业务场景 2、永久...
  • Python二维码应用(一)QRcode二维码生成&识别

    万次阅读 多人点赞 2019-01-05 20:35:39
    基于Python的二维码实验一、机器视觉之QRcode二、基于Python的QRcodetest(一)配置环境(二)生成自己的二维码(三)识别二维码三、调用opencv库...答:这里给一篇博客详细叙述:Python生成二维码 开源库impo...
  • 微信生成带参数二维码以及获取参数 废话不多说,先看一波文档: ...目前2种类型二维码: 1、临时二维码,是过期时间的,最长可以设置为在二维码生成后的30天(即2592000秒)后过期,但能够生成较多数量。...
  • 二维码扫描功能

    2021-04-05 19:12:04
    目前见到的二维码一般是两种,中间图片和没有图片的(通常是APP图标或者个人头像)或者是为二维码添加了背景颜色。这里我提供了三个方法,可以满足这几种需求。 /** * 生成二维码图片的方法 * * @param string ...
  • 生成微信二维码

    千次阅读 2017-11-19 16:14:10
    主要用到Qrcode_swetake.jar这个jar包来实现把传进来的String类型数据转换为byte[][]的二位数组类型。最后生成二维码图片。import java.awt.Color; import java.awt.Graphics2D; import java.awt.image....
  • 二维码详解

    千次阅读 2014-12-15 23:44:38
    什么用?在此表示感谢!虽说文章中我有不同见解,但为了尊重版权,在此全部转载,只是去掉了各自文中的重复部分,在此再次表示感谢! 一、什么是二维码?  二维码是用某种特定的几何图形按一定规律在平面(二...
  • Java解析二维码

    千次阅读 2019-02-21 22:12:01
    最近用到了解析二维码,生成二维码,这里将解析二维码的简单介绍分享在这里啦
  • Java二维码

    2018-02-02 17:09:26
    一、二维码的简介 二维码起源于日本,世界应用最广泛识别码,原本为追踪汽车零部件设计。二维条码/二维码 (2-dimensional bar code) 是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 37,225
精华内容 14,890
关键字:

二维码的类型主要有