zoukankan      html  css  js  c++  java
  • 生成二维码(QRcode(for java version)生成二维码)

    本文是我在慕课网学习之后的成果,感谢慕课网的老师。详细教程可参考 http://www.imooc.com/learn/531
    关于二维码,先简单的介绍下(摘自百度百科):
    在代码编制上巧妙地利用构成计算机内部逻辑基础的“0”、“1”比特流的概念,使用若干个与二进制相对应的几何形体来表示文字数值信息,通过图象输入设备或光电扫描设备自动识读以实现信息自动处理。在许多种类的二维条码中,常用的码制有:Data Matrix,MaxiCode, Aztec,QR Code, Vericode,PDF417,Ultracode,Code 49,Code 16K等,QR Code码是1994年由日本DW公司发明。QR来自英文「Quick Response」的缩写,即快速反应的意思,源自发明者希望QR码可让其内容快速被解码。QR码最常见于日本、韩国;并为目前日本最流行的二维空间条码。但二维码的安全性也正备受挑战,带有恶意软件和病毒正成为二维码普及道路上的绊脚石。

    接下来我们要做的就是使用QRcodeAPI来完成我们的二维码生成程序:

    1.首先我们要获取QRcode的Jar包:下载地址: http://www.swetake.com/qrcode/java/qr_java.html (点击tar.gz文件即可)
    然后我们去lib文件下将QRcode.jar导入我们的项目。

    2.开始我们的编码工作。(首先介绍下二维码是有纠错能力,其有四个等级:L M Q H,一般使用M等级,注意如果你想生成的二维码是个网页链接,必须加上 http:/,否则扫码出来的只是你的url,例如 www.baidu.com 生成的二维码,扫描出来的结果就是这个url字符串而不会跳转到百度首页)

    package com.smart.controller;
    
    import com.swetake.util.Qrcode;
    
    import javax.imageio.ImageIO;
    import java.awt.*;
    import java.awt.image.BufferedImage;
    import java.io.File;
    
    public class Gennerator {
    
        /**
         * 使用QRcode生成二维码
         * @param args
         */
        public static void main(String[] args) throws Exception{
            Qrcode x = new Qrcode();
            x.setQrcodeErrorCorrect('M');//设置纠错等级
            x.setQrcodeEncodeMode('B');//设置编码格式
            x.setQrcodeVersion(7);//设置版本(版本有多种,感兴趣的可以去研究二维码的发展历程,这里我们选择第七版本)
    
            String qrData = "http://www.baidu.com";
            int width = 67 + 12*(7-1);//67+12*(版本号-1)
            int height = 67+ 12*(7-1);
            int pixoff = 2;//设置偏移量
            byte[] d = qrData.getBytes("gb2312");
            BufferedImage bufferedImage = new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
    
            Graphics2D gs =bufferedImage.createGraphics();//使用java的画图工具
            gs.setBackground(Color.white);
            gs.setColor(Color.black);//设置白底黑字
            gs.clearRect(0,0,width,height);
    
            if (d.length > 0 && d.length < 120) {
                boolean[][] s = x.calQrcode(d);
    
                for (int i = 0; i < s.length; i++) {
                    for (int j = 0; j < s.length; j++) {
                        if (s[j][i]) {
                            gs.fillRect(j * 3+pixoff, i * 3+pixoff, 3, 3);//根据QRcode规则填充黑白点
                        }
                    }
                }
            }
            gs.dispose();
            bufferedImage.flush();//释放资源
    
            ImageIO.write(bufferedImage,"png",new File("D:/qrcode.png"));//生成二维码,格式 png,文件地址 
    
    
        }
    
    }
    
    
    

    生成的二维码如下:

    扫一下试试吧!

  • 相关阅读:
    Linux 命令
    Linux 命令
    Linux 命令
    Linux 命令
    121.Best Time to Buy and Sell Stock---dp
    136.Single Number---异或、位运算
    141.Linked List Cycle---双指针
    Restful接口设计
    socket网络编程
    107.Binary Tree Level Order Traversal II
  • 原文地址:https://www.cnblogs.com/shuoli/p/7623656.html
Copyright © 2011-2022 走看看