1.信息
2.信息转byte数组
3.画板--》内存
4.转换成boolean二维数组
具体原理:
1.创建信息对象
2.将信息转换为byte数组
3.创建图片缓冲对象
4.创建画板对象
5.创建二维码对象
6.对二维码属性进行配置和对图像大小进行配置。
7.将信息byte数组用二维码对象calQrcode(byte[])转换为boolean[][]
8.根据boolean[][]是否为true进行绘制方块
9.刷新
10.输出到本地
需要的工具包
com.swetake.util.Qrcode,
上传不了附件,百度网盘吧:
https://pan.baidu.com/s/1YI_DE7hortJ0FTkUjF_7PQ 密码:tp2c
// 定义信息
String message = "欢迎光临";
// 定义byte[]
byte[] messageByte = null;
//定义图片文件缓冲对象
BufferedImage bufferedImage = null;
//定义画板 --就是图片的载体
Graphics2D gs = null;
//创建一个二维码对象
Qrcode qrcode = new Qrcode();
//对二维码进行属性设置
//容错率L7 M15 Q25 H30
qrcode.setQrcodeErrorCorrect('M');
//设置编码方式
qrcode.setQrcodeEncodeMode('B');
//设置尺寸
qrcode.setQrcodeVersion(5);
//设置图像尺寸
int len = 114;
try {
//将信息转换为byte[]
messageByte = message.getBytes("utf-8");
//创建图片缓冲对象
bufferedImage =new BufferedImage(len,len,BufferedImage.TYPE_INT_RGB);
//创建画板
gs = bufferedImage.createGraphics();
//设置背景色
gs.setBackground(Color.white);
//擦除从(0,0)到(len,len)的数据
gs.clearRect(0,0,len,len);
//设置画笔颜色
gs.setColor(Color.black);
//创建一个二维数组,该方法可以将byte数组转换为二维数组
boolean[][] booleans = qrcode.calQrcode(messageByte);
//开始正式的绘制
for (int i=0,k=booleans.length;i<k;i++){
for(int j=0;j<k;j++){
if(booleans[j][i]){
//画格子
gs.fillRect(j*3,i*3,3,3);
}
}
}
//刷新
gs.dispose();
//输出本地
File file = new File("C:\\Users\\oi\\Pictures\\生成的图片\\qrcode.png");
//将图片保存到本地
ImageIO.write(bufferedImage,"png",file);
System.out.println("ok");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}catch (IOException e) {
e.printStackTrace();
}