1. 程式人生 > >java生成二維碼以及讀取案例

java生成二維碼以及讀取案例

      今天有時間把二維碼這塊看了一下,方法有幾種,我只是簡單的看了一下  google  的  zxing!

      很簡單的一個,比較適合剛剛學習java的小夥伴哦!也比較適合以前沒有接觸過和感興趣的的小夥伴,o(* ̄︶ ̄*)o

     生成二維碼  ,將二維碼返回頁面展示 ,讀取二維碼 !

    首先新增需要的pom檔案

   <!-- https://mvnrepository.com/artifact/com.google.zxing/core -->
        <dependency>
            <groupId>com.google.zxing</groupId>
            <artifactId>core</artifactId>
            <version>3.3.3</version>
        </dependency>
        <!-- https://
mvnrepository.com/artifact/com.google.zxing/javase --> <dependency> <groupId>com.google.zxing</groupId> <artifactId>javase</artifactId> <version>3.3.3</version> </dependency>

想寫點啥感覺好像也沒啥寫的o(* ̄︶ ̄*)o不多說  上程式碼

@RequestMapping("/test3")
    public String test03(HttpServletRequest req){
        System.out.println(1234);
        final int width = 300;
        final int height = 300;
        final String format = "png";
        final String content = "我愛你,中國!!!";
        //定義二維碼的引數
        HashMap hints = new
HashMap(); hints.put(EncodeHintType.CHARACTER_SET, "utf-8"); hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.M); hints.put(EncodeHintType.MARGIN, 2); //生成二維碼 try{ BitMatrix bitMatrix = new MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE, width, height, hints); Path file = new File(req.getSession().getServletContext().getRealPath("")+"static\\img.png").toPath(); MatrixToImageWriter.writeToPath(bitMatrix, format, file); }catch(Exception e){ } return "index2"; }

這是在一個正常的專案裡寫的案例,隨意的一個測試請求,返回了一個測試頁面,就是獲取專案的根路徑,然後將生成的二維碼儲存在專案裡面了,正常的話應該有單獨的圖片伺服器吧!

  頁面案例程式碼,就是將圖片回顯出來了,很隨意的一個案例

<div align="center" style="width: 100%;">
<img src="../static/img.png">
</div>
<div align="center" style="width: 100%;">
    <button onclick="get();">getText</button>
</div>
<script type="text/javascript" src="../static/jquery.min.js"></script>
<script type="text/javascript">
   function  get() {
       var url = "test4";
       $.get(url,function(data){
           alert(data.text);
       });
   }
</script>

效果如圖

 接下來就是獲取二維碼資訊的案例了,為了簡單,我直接在該頁面添加了一個點選獲取事件

    下面是獲取二維碼的程式碼

@RequestMapping("/test4")
    @ResponseBody
    public Map test04(HttpServletRequest req) throws Exception {
        MultiFormatReader formatReader = new MultiFormatReader();
        File file = new File(req.getSession().getServletContext().getRealPath("")+"static\\img.png");

        BufferedImage image = ImageIO.read(file);
        BinaryBitmap binaryBitmap = new BinaryBitmap(new HybridBinarizer(new BufferedImageLuminanceSource(image)));

        //定義二維碼的引數
        HashMap hints = new HashMap();
        hints.put(EncodeHintType.CHARACTER_SET, "utf-8");

        Result result = formatReader.decode(binaryBitmap, hints);

        System.out.println("二維碼解析結果:" + result.toString());
        System.out.println("二維碼的格式:" + result.getBarcodeFormat());
        System.out.println("二維碼的文字內容:" + result.getText());

        Map map = new HashMap();
        map.put("text",result.getText());
        return map;
    }

就是傳送了一個ajax請求,將二維碼資訊返回。然後彈出了一下

效果如圖