1.添加maven依赖
<dependency> <groupId>com.google.zxing</groupId> <artifactId>javase</artifactId> <version>3.3.3</version> </dependency>
2.写个controller请求
package com.fansir.controller; import com.google.zxing.BarcodeFormat; import com.google.zxing.EncodeHintType; import com.google.zxing.MultiFormatWriter; import com.google.zxing.client.j2se.MatrixToImageWriter; import com.google.zxing.common.BitMatrix; import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.OutputStream; import java.util.HashMap; import java.util.Map; /** * @author fasnir * @date 2022/3/1 16:46 */ @RestController public class UserController { @RequestMapping(value="/getQRCode") public void dowanload(HttpServletRequest request, HttpServletResponse response) throws Exception { //二维码中包含的信息 String content = "http://www.baidu.com"; Map<EncodeHintType, Object> hints = new HashMap<EncodeHintType, Object>(); // 指定编码格式 hints.put(EncodeHintType.CHARACTER_SET, "UTF-8"); // 指定纠错级别(L--7%,M--15%,Q--25%,H--30%) hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H); // 编码内容,编码类型(这里指定为二维码),生成图片宽度,生成图片高度,设置参数 BitMatrix bitMatrix = new MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE, 200, 200, hints); //设置请求头 注释起来就返回图片到浏览页面,否则就是浏览器下载图片。 //response.setHeader("Content-Type","application/octet-stream"); response.setHeader("Content-Disposition", "attachment;filename=" + "code.png"); OutputStream outputStream = response.getOutputStream(); MatrixToImageWriter.writeToStream(bitMatrix, "png", outputStream); outputStream.flush(); outputStream.close(); } }
response.setHeader("Content-Type","application/octet-stream"); 加上这样代码浏览器会直接下载二维码图片,注释起来就是直接显示在页面上。
3.请求测试
4.扫码测试