zoukankan      html  css  js  c++  java
  • Java 骚操作--生成二维码

    好久没发布博客了,今天发了一个Java工具类,突然发现草稿箱竟然还有以前的存货,一次性发了!!!

    目录 1.二维码概念  2.二维码发展历史  3.二维码分类  4.二维码优缺点  5.QR Code

     1.二维码又称  二维条码 (2-dimensional bar code)是用某种特定的几何图形按一定规律在平面(二维码上)分布的黑白相间的图形记录数据符号信息的图形。

    2二维码发展历史

     1.20世纪20年代 约翰 科芒德实现邮政单据自动分拣方法,

     2.1949年美国乔 伍德兰德 伯尼西尔沃发明第一个条码专利,

     3.1959年 吉拉德 费伊塞尔申请了用条形码表示数字的专利,

     4.60年代 西尔沃尼亚发明一套条形码系统并在北美铁路系统成功应用,

     5.70年代,UPC(Universal Product Code)在北美超市得到广泛应用,

     6.1988年中国成立了中国物品编码中心,80年代未国外研制出二维码,

     7.1997年到2000年确定了国家标准

    3.二维码分类

    1. 一维条码是由一组粗细不同,黑白(或彩色)相间的条,空及其相符的字符(数字字母)组成的标记,即传统条码。

    2. 二维条码是用某种特定的几何图形按一定规律在平面(二维码上上分布的条,空间的图形来记录数据符号信息

     

    二维条码也有许多不同的码制,就码制的编码原理而言,通常分为三种
    类型:
    1.线性堆叠式二维码

     编码原理: 建立在一维条码基础上,按需要堆积成两行或多行。


    2.矩阵式二维码

       在一个矩形空间通过黑,白像素在矩阵中的不同分布进行编码的出现表示二进制“1”点的不出现表示二进制的“0”


    3.邮政码

       邮政码通过不同长度的条进行编码,主要用于邮件编码,
    POSTNET、
    BPO 4-STATE。

     

    4. 二维码优缺点

     

     

    5. QR Code 

    目前流行的三大国标准:

             PDE417:不支持中文

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

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

             QR Code比其他二维码相比,具有识读速度快,数据度大,占用空间小的优势。

     QR Code 是由日本Denso公司于1994年研制的一种矩阵二维码符号码,全称是Quick Response Code

         

    纠错能力

    L: 约可纠错7%的数据码字M: 约可纠错15%的数据码字Q: 约可纠错25%的数据码字H: 约可纠错30%的数据码字

    6. 二维码制作:Java语言开发

    首先引入zxing的jar包

    jar包:链接:https://pan.baidu.com/s/1GzjQOqWhZYPsL0uzf569dw 密码:kril

    详细操作:

    package cn.code;
    
    import java.io.File;
    import java.nio.file.Path;
    import java.util.HashMap;
    
    import com.google.zxing.BarcodeFormat;
    import com.google.zxing.EncodeHintType;
    import com.google.zxing.MultiFormatWriter;
    import com.google.zxing.client.j2se.MatrixToImageWriter;
    import com.google.zxing.common.BitMatrix;
    import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
    
    /**
     * 
     * @author: 房上的猫
     * 
     * @time: 下午11:38:45
     * 
     * @博客地址: https://www.cnblogs.com/lsy131479/
     *
     *        生成二维码
     */
    
    public class Zxing {
        public static void main(String[] args) {
            Zxing zxing = new Zxing();
    
            // 传参:二维码内容和生成路径
            if (zxing.orCode("https://www.cnblogs.com/lsy131479/", "F:\1.jpg")) {
                System.out.println("ok,成功");
            } else {
                System.out.println("no,失败");
            }
        }
    
        private boolean orCode(String content, String path) {
            /*
             * 图片的宽度和高度
             */
            int width = 300;
            int height = 300;
            // 图片的格式
            String format = "png";
            // 二维码内容
            // String content = "hello,word";
    
            // 定义二维码的参数
            HashMap hints = new HashMap();
            // 定义字符集编码格式
            hints.put(EncodeHintType.CHARACTER_SET, "utf-8");
            // 纠错的等级 L > M > Q > H 纠错的能力越高可存储的越少,一般使用M
            hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.M);
            // 设置图片边距
            hints.put(EncodeHintType.MARGIN, 2);
    
            try {
                // 最终生成 参数列表 (1.内容 2.格式 3.宽度 4.高度 5.二维码参数)
                BitMatrix bitMatrix = new MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE, width, height, hints);
                // 写入到本地
                Path file = new File(path).toPath();
                MatrixToImageWriter.writeToPath(bitMatrix, format, file);
                return true;
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
                return false;
            }
    
        }
    
    }

    二维码生成还有其他方式生成,今天这里将不再讲解,如果有兴趣的可以关注一下作者,后续会持续出教程的

      其他方式:

        1.or code 生成及解析

        2.jQuery-qrcode 生成及解析

  • 相关阅读:
    (转)获取枚举属性的值
    C#调用C++类(以COM组件的形式)
    托管DirectX,从MDX到SlimDX的转换(转)
    数字地球影像服务后台数据读取粗糙问题
    DevExpress控件EditValue_Changed事件(延迟问题)
    Visual Studio 2008经常性卡死的其中一种解决办法
    It's not too late to start!
    Gcc编译器 linux
    UNIX系统中的进程 linux
    图算法套汇问题 linux
  • 原文地址:https://www.cnblogs.com/lsy131479/p/8808172.html
Copyright © 2011-2022 走看看