筆記-谷歌Zxing二維碼,用數據流輸出到頁面顯示

筆記,谷歌Zxing二維碼,用數據流輸出到頁面顯示

二維碼一直都很流行,今日實踐了一下,需求是針對不同的參數生成地址鏈接二維碼,並展示在頁面上,如果採用生成圖片保存本地再返回相對路徑,會產生一堆垃圾圖片文件,還要後期清除實在是麻煩,想起登錄時的校驗碼可以直接將流輸出到頁面,故就異曲同工吧,少廢話直接上代碼。

項目是SpringMVC,maven管理
先導入谷歌的二維碼pom文件Zxing的依賴關係

  <!-- 二維碼 -->
    <dependency>
      <groupId>com.google.zxing</groupId>
      <artifactId>core</artifactId>
      <version>3.2.0</version>
    </dependency>
    <dependency>
      <groupId>com.google.zxing</groupId>
      <artifactId>javase</artifactId>
      <version>3.2.0</version>
    </dependency>

頁面jsp顯示二維碼處:

<img class="q_code" src="${path}/tv/getQ?id=${id}" />

java controller代碼

    @RequestMapping(value = "/getQ", method = { RequestMethod.POST, RequestMethod.GET })
    public void getqcode(HttpServletResponse resp, String id) throws IOException {
        String url = "要生成二維碼的地址"+id;
        if (url != null && !"".equals(url)) {
            ServletOutputStream stream = null;
            try {

                int width = 200;//圖片的寬度
                int height = 200;//高度
                stream = resp.getOutputStream();
                QRCodeWriter writer = new QRCodeWriter();
                BitMatrix m = writer.encode(url, BarcodeFormat.QR_CODE, height, width);
                MatrixToImageWriter.writeToStream(m, "png", stream);
            } catch (WriterException e) {
                e.printStackTrace();
            } finally {
                if (stream != null) {
                    stream.flush();
                    stream.close();
                }
            }
        }
    }

最後當頁面加載的時候會去執行img標籤內的src請求返回圖片流並展示。
這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章