1.导入依赖
使用hutool-all和com.google.zxing的依赖
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.8.5</version>
</dependency>
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>core</artifactId>
<version>3.3.3</version>
</dependency>
2.字符串生成二维码
package com.example.task.controller;
import cn.hutool.core.codec.Base64Encoder;
import cn.hutool.core.img.ImgUtil;
import cn.hutool.extra.qrcode.QrCodeUtil;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.UUID;
@RestController
public class QRCodeController {
@RequestMapping("genarateQRCode")
public String genarateQRCode() throws IOException {
//将一个字符串转化成jpg格式二维码图片的字节数组
String msg = UUID.randomUUID().toString();
BufferedImage bufferedImage = QrCodeUtil.generate(msg, 300, 300);
byte[] bytes = ImgUtil.toBytes(bufferedImage, "JPG");
//创建一个文件,待会儿将二维码写入
String path = "D:" + File.separator + "1.jpg";
File localFile = new File(path);
if (!localFile.exists())
localFile.createNewFile();
//将二维码写入
FileOutputStream out = new FileOutputStream(path);
out.write(bytes);
out.close();
return path;
}
}
3.模拟别人拿到base64Code后如何生成二维码
package com.example.task.controller;
import cn.hutool.core.codec.Base64Encoder;
import cn.hutool.core.img.ImgUtil;
import cn.hutool.extra.qrcode.QrCodeUtil;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.UUID;
@RestController
public class QRCodeController {
@RequestMapping("generatQRCodeByBase64Code")
public String generatQRCodeByBase64Code() throws IOException {
//将一个字符串转化成jpg格式二维码图片的字节数组
String msg = UUID.randomUUID().toString();
BufferedImage bufferedImage = QrCodeUtil.generate(msg, 300, 300);
byte[] bytes = ImgUtil.toBytes(bufferedImage, "JPG");
//模拟一下别人拿到二维码的base64Code后如何生成图片
String base64Code = Base64Encoder.encode(bytes);
BufferedImage image = ImgUtil.toImage(base64Code);
byte[] bytes1 = ImgUtil.toBytes(image, "JPG");
//创建一个文件,待会儿将二维码写入
String path = "D:" + File.separator + "2.jpg";
File localFile = new File(path);
if (!localFile.exists())
localFile.createNewFile();
//将二维码写入
FileOutputStream out = new FileOutputStream(path);
out.write(bytes);
out.close();
return path;
}
}
4.测试
生成的二维码
扫描后