java使用google.zxing生成二维码
1、maven依赖
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>core</artifactId>
<version>3.3.1</version>
</dependency>
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>javase</artifactId>
<version>3.3.0</version>
</dependency>
2、生成方式
2.1 无需保存图片版
使用后台生成byte[]的方式传到前台进行展示,前台使用js进行解析
2.1.1 java代码
@RequestMapping({ "QRcode" })
@ResponseBody
public String QRcode(HttpServletRequest request){
byte[] QRcode=QRManager.getQRcode();
//返回前台一个String串
return Arrays.toString(QRcode);
}
public byte[] getQRcode(){
byte[] pngData =null;
try {
QRCodeWriter qrCodeWriter = new QRCodeWriter();
Map<EncodeHintType, Object> hints = new HashMap<EncodeHintType, Object>();
//使中文不乱码
hints.put(EncodeHintType.CHARACTER_SET, "utf-8");
String content="";
content+="姓名:张三\n";
content+="性别:男\n";
//BarcodeFormat.QR_CODE:编码格式
//300,300:分别是生成的二维码的宽高
BitMatrix bitMatrix = qrCodeWriter.encode(content, BarcodeFormat.QR_CODE, 300, 300,hints);
ByteArrayOutputStream pngOutputStream = new ByteArrayOutputStream();
MatrixToImageWriter.writeToStream(bitMatrix, "PNG", pngOutputStream);
pngData = pngOutputStream.toByteArray();
}catch (Exception e){
LOG.warn(e.getMessage());
}
return pngData;
}
2.2.1 前台解析
<img id="QRcodeImg" src="">
$(function () {
$.ajax({
url:__rootPath+'/QRcode.do',
method:'POST',
success: function (bytesStr) {
//因为返回的格式为[-21,1,.........] 所以要把前后的[]去掉
bytesStr=bytesStr.substring(1,bytesStr.length-1);
var bytes = new Uint8Array(bytesStr.split(","));
var blob = new Blob([bytes], { type: "image/png" });
var url = URL.createObjectURL(blob);
document.getElementById('QRcodeImg').src = url;
}
});
})
2.1.3 生成的二维码

1万+

被折叠的 条评论
为什么被折叠?



