本例所需要的生成二维码和解析二维码两个相关Jar包的下载地址如下:
链接:http://pan.baidu.com/s/1dFlKmOD 密码:i4rv
来源:http://blog.youkuaiyun.com/u012453843/article/details/71512104
首先,新建一个Java工程,在工程中添加一个lib目录,将生成二维码和解析二维码这两个相关的Jar包放在lib目录下,添加到buildpath当中。新建一个包"com.qrcode",并在该包下新建一个CreateQRCode类,如下图所示:
CreateQRCode类代码如下:
package com.qrcode;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;
import com.swetake.util.Qrcode;
public class CreateQRCode {
public static void main(String[] args) throws Exception {
//设置生成二维码的参数信息
Qrcode qrcode = new Qrcode();
qrcode.setQrcodeErrorCorrect('M'); //纠错等级(分为L、M、H三个等级)
qrcode.setQrcodeEncodeMode('B'); //N代表数字,A代表a-Z,B代表其它字符
qrcode.setQrcodeVersion(20); //版本 (不同的版本,生成的二维码复杂程度不一样,版本越高,像素越高0)
//生成二维码中要存储的信息
String qrDate = "http://blog.youkuaiyun.com/GRAY_KEY";
//设置一下二维码的像素 (根据版本号用公式定义宽和高,否则生成的二维码可能只是占了像素的几分之一,并没有填充完)
int width = 67 + 12*(20-1);
int height = 67 + 12*(20-1);
//创建绘图对象
BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
//绘图
Graphics2D gs = bufferedImage.createGraphics();
gs.setBackground(Color.WHITE); //设置背景色
gs.setColor(Color.black); //设置二维码颜色
gs.clearRect(0, 0, width, height); //清除下画板内容
//设置下偏移量,如果不加偏移量,有时会导致出错。
int pixoff = 2;
byte[] d = qrDate.getBytes("gb2312");
if (d.length > 0 && d.length < 120) {
boolean[][] s = qrcode.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);
}
}
}
}
gs.dispose();
bufferedImage.flush();
ImageIO.write(bufferedImage,"png",new File("G:/code/qrcode.png"));
//"G:/code/qrcode.png" 是二维码图片的生成路径,
//注:G盘下的code文件夹必须存在,否则运行代码时会报 FileNotFoundException(系统找不到指定的路径。)
}
}
运行上面的代码,运行成功后,到二维码生成的指定目录查看,其图片如下:
扫描图中二维码,即可打开到二维码中存储的网址或获得二网址维码中存储的信息。
本例二维码存放的是一个网址信息,故扫描本例中的二维码,将打开到对应的网址。