用Java编写二维码,首先会用到qrcode.jar这个jar包,需要的话的话,可以下载,这是地址:http://pan.baidu.com/s/1slFDVjR
我来解释一下生成二维码的步骤:
(1)new出一个绘制工具Graphics
(2)设置二维码的背景色,设置成白色,在设置前景色,设置成黑色
(3)定义二维码的绘制区域,调用Graphics的clearRect方法
(4)然后把要输入的内容转换为byte数组
(5)最重要的一步,定义一个boolean的二维数组,如果这个位置是真的,就涂成黑色
(6)最后再把这个生成的二维码以图片的形式保存在制定的路径即可。
以下是所有的代码:
package com.cal.util;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import javax.imageio.ImageIO;
import com.swetake.util.Qrcode;
public class QrcodeUtil {
//方法,属性,代码块
//定义一个生成二维码的方法
public static void QrcodeImg(String context,String imgPath){
//实例化一个Qrcode
Qrcode qrcode = new Qrcode();
//拍错率15%
qrcode.setQrcodeErrorCorrect('M');
//版本
qrcode.setQrcodeVersion(7);
//编码
qrcode.setQrcodeEncodeMode('B');
//
int width = 140;
int height = 140;
BufferedImage bufferImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
//绘制工具
Graphics2D gs = bufferImage.createGraphics();
//设置二维码的背景色
gs.setBackground(Color.white);
//前景色
gs.setColor(Color.black);
//定义二维码的绘制区域
gs.clearRect(0, 0, width, height);
try {
byte[] contentBytes = context.getBytes("utf-8");
boolean[][] codeOut = qrcode.calQrcode(contentBytes);
for(int i=0;i<codeOut.length;i++){
for(int j=0;j<codeOut.length;j++){
if(codeOut[j][i]){
//如果在这个位置是真的,就涂成黑色
gs.fillRect(j*3+2, i*3+2, 3, 3);
}
}
}
gs.dispose();
File imgFile = new File(imgPath);
try {
ImageIO.write(bufferImage, "png", imgFile);
System.out.println("二维码生成成功!!!");
} catch (IOException e) {
e.printStackTrace();
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
QrcodeImg("伍金凡", "c:/myclass/lan.png");
}
}