2019独角兽企业重金招聘Python工程师标准>>>
一、java生成二维码 有zxing 和 QRCode 两种方式,思路大致相同,此处使用QRCode。
思路 :
- 引入jar包 QRCode.jar
- 生成二维码:创建Qrcode对象,并设置二维码的内容和大小
- 创建image对象,并将二维码画在上面
- 将最终的二维码输出
具体代码如下:
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import com.swetake.util.Qrcode;
public class CreatQRCode {
public static int PIXOFF = 3; // 偏移量,不设置可能导致解析出错
public static int WIDTH = 3; // 二维码矩阵的 每行/每列 宽度
public static void main(String[] args) {
// TODO Auto-generated method stub
qRCode("", 5);
}
private static BufferedImage qRCode(String content, int size) {
BufferedImage bufImg = null;
try {
Qrcode qrcodeHandler = new Qrcode();
// 设置二维码排错率,可选L(7%)、M(15%)、Q(25%)、H(30%),排错率越高可存储的信息越少,但对二维码清晰度的要求越小
qrcodeHandler.setQrcodeErrorCorrect('M');
// 设置二维码模型,现在主流使用第二种模型
qrcodeHandler.setQrcodeEncodeMode('B');
// 设置设置二维码尺寸,取值范围1-40,值越大尺寸越大,可存储的信息越大
qrcodeHandler.setQrcodeVersion(size);
// 获得内容的字节数组,设置编码格式
byte[] contentBytes = content.getBytes("utf-8");
// 设置生成二维码图片的尺寸,根据size和偏移量PIXOFF计算.
// 当二维码的取值为1时,是一个21*21的矩阵,每增加一个size,矩阵的列或行数增加4,如size=5时,是一个41*41的矩阵
int imgSize = PIXOFF + (21 + (size - 1) * 4) * WIDTH + PIXOFF;
bufImg = new BufferedImage(imgSize, imgSize, BufferedImage.TYPE_INT_RGB);
Graphics2D gs = bufImg.createGraphics();
// 设置背景颜色
gs.setBackground(Color.WHITE);
gs.clearRect(0, 0, imgSize, imgSize);
// 设定图像颜色> BLACK
gs.setColor(Color.BLACK);
// 将二维码画在 bufImg上
if (contentBytes.length > 0 && contentBytes.length < 800) {
boolean[][] codeOut = qrcodeHandler.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 * WIDTH + PIXOFF, i * WIDTH + PIXOFF, WIDTH, WIDTH);
}
}
}
} else {
throw new Exception("QRCode content bytes length = " + contentBytes.length + " not in [0, 800].");
}
gs.dispose();
bufImg.flush();
} catch (Exception e) {
e.printStackTrace();
}
return bufImg;
}
}
二、javascript 生成二维码
思路:
- 引入qrcode.js 文件
- 在javascript中调用 makeCode()方法
具体代码:
html 页面
javascript生成二维码
js 页面
$(document).ready(function() {
var qrcode = new QRCode(document.getElementById("qrcodeDiv"), {
width : 300,
height : 300,
typeNumber:5, //二维码的版本/大小,取值范围 1-40
colorLight : '#fff', //背景色,默认值是 黑色
colorDark : '#000', //前景色,默认值是白色
correctLevel :QRCode.CorrectLevel.L
//容错级别,默认值是 QRCode.CorrectLevel.L
//可设置为:
// QRCode.CorrectLevel.M
// QRCode.CorrectLevel.Q
// QRCode.CorrectLevel.H
});
});
function makeCode(content) { //content 是二维码存储内容
qrcode.clear();
qrcode.makeCode(content);
}