1. 程式人生 > 其它 >根據URL生成二維碼返回前端頁面

根據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.掃碼測試