一:引入pom
<!-- zxing二维码生成 --> <dependency> <groupId>com.google.zxing</groupId> <artifactId>core</artifactId> <version>3.0.0</version> </dependency> <dependency> <groupId>com.google.zxing</groupId> <artifactId>javase</artifactId> <version>3.0.0</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> </dependency>
二:生成/下载二维码
/** * 二维码请求 * * @param resp * @param qrUrl * @throws IOException */ @RequestMapping(value = "/getQRcode", method = {RequestMethod.POST, RequestMethod.GET}) @ApiOperation(value = "获取二维码", response = ApiResponse.class) @SignIgnore @VisitorAccessible public ApiResponse getQRcode(HttpServletResponse resp, String qrUrl) throws IOException { if (qrUrl != null && !"".equals(qrUrl)) { resp.setHeader("Content-type", "image/jpeg"); resp.setHeader("Content-disposition","attachment;filename=code.jpeg"); // TODO: 2018/4/3 加上此行浏览器会自动下载,否则浏览器只展示图片 OutputStream stream = null; try { int width = 400;//图片的宽度 int height = 400;//高度 stream = resp.getOutputStream(); QRCodeWriter writer = new QRCodeWriter(); BitMatrix m = writer.encode(qrUrl, BarcodeFormat.QR_CODE, height, width); MatrixToImageWriter.writeToStream(m, "jpeg", stream); } catch (WriterException e) { e.printStackTrace(); } finally { if (stream != null) { stream.flush(); stream.close(); } } } return new ApiResponse(); }