springboot通过hutool返回base64图片流
需求: 将一个前端返回的数组, 生成一个临时的二维码, 返回给前端
先引入依赖
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>4.6.1</version>
</dependency>
<!--zxing二维码生成, hutool二维码依赖 -->
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>core</artifactId>
<version>3.3.1</version>
</dependency>
直接上代码
public JSONObject getVolumeIdsByQR(List<Long> volumeIds) {
// 生成字节数组输出流
ByteArrayOutputStream byteOut = new ByteArrayOutputStream();
// 生成二维码
QrCodeUtil.generate(JSONUtil.toJsonStr(volumeIds), //二维码内容
// setImg("image/2.jpg"), //附带logo+
QrConfig.create().setWidth(350).setHeight(350), "png", byteOut);
// 生成字节数组输入流
ByteArrayInputStream byteIn = new ByteArrayInputStream(byteOut.toByteArray());
JSONObject jsonObject = new JSONObject();
// 从流中读取图片,返回图片文件
BufferedImage img = ImgUtil.read(byteIn);
// 将图片对象转换为Base64形式
String base64 = ImgUtil.toBase64(img, "png");
// 将base64装入jsonObject对象中
jsonObject.put("imgUrl", base64);
return jsonObject;
}
工具类解析
QrCodeUtil. generate (String, QrConfig, String, OutputStream);
参数:
- String_1: 二维码扫描后展示的值
- QrConfig: 生成图片的配置 (长, 宽, 和中心显示的 logo 图片)
- String_2: ImageType, 生成图片的后缀
- OutputStream: 将文件写入到输出流