生成二维码(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码最多见于日本、韩国;并为目前日本最流行的二维空间条码。但二维码的安全性也正备受挑战,带有恶意软件和病毒正成为二维码普及道路上的绊脚石。html

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

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,文件地址 


    }

}

生成的二维码以下:

扫一下试试吧!学习

本站公众号
   欢迎关注本站公众号,获取更多信息