钻研一下二维码的生成吧!
1. 新建spring boot我的项目
1.1 pom.xml
<!-- 生成二维码依赖 --><dependency> <groupId>com.google.zxing</groupId> <artifactId>javase</artifactId> <version>3.4.1</version></dependency>
1.2 新建生成二维码工具类
/** * 生成二维码工具类 * * @author zhouzhaodong */public class QRCodeGenerator { /** * 生成二维码图片 * @param text * @param width * @param height * @param filePath * @throws WriterException * @throws IOException */ public static void generateQRCodeImage(String text, int width, int height, String filePath) throws WriterException, IOException { QRCodeWriter qrCodeWriter = new QRCodeWriter(); BitMatrix bitMatrix = qrCodeWriter.encode(text, BarcodeFormat.QR_CODE, width, height); Path path = FileSystems.getDefault().getPath(filePath); MatrixToImageWriter.writeToPath(bitMatrix, "PNG", path); } /** * 生成二维码流 * @param text * @param width * @param height * @return */ public static String writeToStream(String text, int width, int height) { String message = ""; QRCodeWriter qrCodeWriter = new QRCodeWriter(); BitMatrix bitMatrix; try { bitMatrix = qrCodeWriter.encode(text, BarcodeFormat.QR_CODE, width, height); ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); MatrixToImageWriter.writeToStream(bitMatrix, "PNG", outputStream); Base64.Encoder encoder = Base64.getEncoder(); message = encoder.encodeToString(outputStream.toByteArray()); } catch (Exception e) { e.printStackTrace(); } return message; }}
1.3 新建controller
/** * 生成二维码 * @author zhouzhaodong */@RestControllerpublic class QRCodeController { /** * 生成二维码图片并将地址回传给前端 * @param orderNo * @return */ @RequestMapping("/qrcode/image") public String qrcodeImage(String orderNo) { String failPath = "src/main/resources/png/" + orderNo + ".png"; try { QRCodeGenerator.generateQRCodeImage(orderNo, 350, 350, failPath); } catch (Exception e) { e.printStackTrace(); } return failPath; } /** * 生成二维码Base64回传给前端 * @param orderNo * @return */ @RequestMapping("/qrcode/base64") public String qrcodeBase64(String orderNo) { String message = ""; try { message = QRCodeGenerator.writeToStream(orderNo, 350, 350); } catch (Exception e) { e.printStackTrace(); } return message; }}
1.4 测试
这里我应用IDEA自带的HTTP申请客户端进行测试。
1.4.1 先测试生成图片的申请
1.4.2 再测试生成Base64的申请
能够去https://tool.jisuapi.com/base642pic.html去将Base64转为图片
源代码地址:
https://github.com/zhouzhaodong/springboot/tree/master/spring-boot-qrcode
集体博客地址:
http://www.zhouzhaodong.xyz/