hutool工具类生成二维码案例
hutool工具类生成二维码案例
一、环境:
添加hutool工具类依赖,hutool生成二维码是利用Google的zixing,而且不是强依赖,所以还需引入zxing依赖
<dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.3.4</version> </dependency> <dependency> <groupId>com.google.zxing</groupId> <artifactId>core</artifactId> <version>3.3.3</version> </dependency>
二、生成二维码
1.生成二维码,写入response流中返回前端
后台代码:
/** * 获取二维码 * yuanzidu * @return */ @GetMapping("/getQRCode") @ResponseBody public void getQRCode(HttpServletResponse response) throws IOException { String qrCodeUrl = "需要生成的内容"; try { QrConfig qrConfig = new QrConfig(300, 300); QrCodeUtil.generate(qrCodeUrl, qrConfig, "png", response.getOutputStream()); log.info("生成二维码成功!"); } catch (QrCodeException | IOException e) { log.error("发生错误! {}!", e.getMessage()); } }
前端接收:
<!-- 可用img标签进行接收 --> <img th:src="xxxurl地址/getQRCode">
2.生成多个二维码并打包成zip下载
后台代码:
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.OutputStream; import java.util.*; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; /** * 打包成.zip选中的二维码 * yuanzidu */ @GetMapping("/getAllQRCode") @ResponseBody public void getAllQRCode(HttpServletResponse response) throws IOException { Assert.hasLength(id, "主键不能为空."); //设置响应参数 response.setContentType("application/zip"); response.setHeader("Content-disposition", "attachment; filename=" + new String((StringUtils.replace("二维码列表_" + DateUtil.now(), " ", "_")).getBytes(), "ISO-8859-1") + ".zip"); //zip流 OutputStream outputStream = response.getOutputStream(); ZipOutputStream zipOutputStream = new ZipOutputStream(outputStream); //根据id生成二维码 List<String> idList = new ArrayList<>(); idList.add("1"); idList.add("2"); idList.add("3"); idList.add("4"); //生成二维码并压缩进zip for (String id : idList) { String fileName ="二维码_"+id; ZipEntry entry = new ZipEntry(fileName + "." + "PNG"); zipOutputStream.putNextEntry(entry); QrCodeUtil.generate(id, 300, 300, ImgUtil.IMAGE_TYPE_PNG, zipOutputStream); zipOutputStream.flush(); } zipOutputStream.close(); outputStream.flush(); outputStream.close(); }
前端代码:
<script> function downloadFile(){ window.location.href = "url地址/getAllQRCode"; } </script>