在我们生活中,二维码变的越来越普遍,可以说是无处不在,如何用java制作一个包含字符串内容的二维码。
制作二维码需要Qrcode.jar
可以在官网下载,也可以在我个人的百度云获取
百度云链接:https://pan.baidu.com/s/153Q8SiHzxqeUMhlXIsMtNw
提取码:jx59
二维码的本质就是二维数组。
其中二维码的纠错级别分有几级,纠错级别越高,整体需要携带的信息越多:L级可纠正7%错误、M级别可纠正15%错误、Q级别可纠正25%错误、H级别可纠正30%错误,一般中M级别的就可以的。
qrcode.setQrcodeErrorCorrect('M');
二维码中的内容:
String content = "程序运行成功";
源码如下
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 main(String[] args) {
String content = "程序运行成功";
boolean[][] bs = getBooleansByTool(content);
int width = 171;
int height = 171;
//创建一个图像对象
BufferedImage bufferedImage = new BufferedImage(width,height,1);
//得到画笔
Graphics2D gg =bufferedImage.createGraphics();
//设置背景颜色
gg.setBackground(Color.white);
gg.fillRect(0, 0, width, height);
//设置画笔颜色
gg.setColor(Color.black);
int len = bs.length;
int lon = 3;
for (int i = 0; i <len; i++) {
for (int j = 0; j < len; j++) {
if (bs[i][j]) {
gg.fillRect(i * lon , j* lon , lon, lon);
}
}
}
String path = "C:\\Users\\Desktop/new.jpg";//二维码生成地址
try {
ImageIO.write(bufferedImage,"jpg",new File(path));
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 通过二维码工具将内容转转换成二维数组
* @param content
* @return
*/
public static boolean[][] getBooleansByTool(String content) {
boolean [][] bs = null;
//创建二维码对象
Qrcode qrcode = new Qrcode();
qrcode.setQrcodeEncodeMode('B'); //编码方式
//容错率L7% M15% Q25% R30%
qrcode.setQrcodeErrorCorrect('M'); //容错率
qrcode.setQrcodeVersion(10);
//转换成二维数组
try {
bs = qrcode.calQrcode(content.getBytes("utf-8"));
}catch(UnsupportedEncodingException e) {
e.printStackTrace();
}
return bs;
}
}
运行成功会在桌面生成一个二维码图片