添加依赖
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>core</artifactId>
<version>3.3.0</version>
</dependency>
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>javase</artifactId>
<version>3.3.0</version>
</dependency>
生成二维码保存到指定路径
private void getImage(String text) throws WriterException, IOException {
String filePath = "D://work/";
String pa = ".png";
QRCodeWriter qrCodeWriter = new QRCodeWriter();
//生成uuid名称
String uuid = UUID.randomUUID().toString();
Map hints = new HashMap();
//设置UTF-8, 防止中文乱码
hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");
//设置二维码的容错性
hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);
//设置二维码样式
BitMatrix bitMatrix = qrCodeWriter.encode(text, BarcodeFormat.QR_CODE, 400, 400, hints);
//拼接图片地址
String paths = filePath + uuid + pa;
Path path = FileSystems.getDefault().getPath(paths);
//保存到设置的地址
MatrixToImageWriter.writeToPath(bitMatrix, "PNG", path);
}
生成二维码转为base64格式
@Override
public Result getImageCode(String type, String data) {
//需要编码的内容
try {
JSONObject jsonObject = new JSONObject();
jsonObject.put("type",type);
jsonObject.put("data",data);
QRCodeWriter qrCodeWriter = new QRCodeWriter();
Map hints = new HashMap();
//设置UTF-8编码格式, 防止中文乱码
hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");
//设置二维码的容错性
hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);
//设置二维码图片宽高属性
BitMatrix bitMatrix = qrCodeWriter.encode(jsonObject.toString(), BarcodeFormat.QR_CODE,430, 430,hints);
// 写入到输出流
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
MatrixToImageWriter.writeToStream(bitMatrix, "PNG", outputStream);
//转换为base64格式
Base64.Encoder encoder = Base64.getEncoder();
String advUrl = "data:image/jpeg;base64,"
+encoder.encodeToString(outputStream.toByteArray());
//打印base64结果
System.out.println(advUrl);
return Result.ok(advUrl);
}catch (Exception e){
e.printStackTrace();
return Result.error("二维码生成失败");
}
}