根据URL生成二维码返回前端页面

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.扫码测试

 

posted @ 2022-03-01 17:02  fansir万岁  阅读(440)  评论(0编辑  收藏  举报