zoukankan      html  css  js  c++  java
  • Java二维码生成与解码


     
    基于google zxing 的Java二维码生成与解码
     
    一、添加Maven依赖(解码时需要上传二维码图片,所以需要依赖文件上传包)
    <!-- google二维码工具 -->
    <dependency>
     <groupId>com.google.zxing</groupId>
     <artifactId>javase</artifactId>
     <version>3.1.0</version>
    </dependency>
    
    <!-- 文件上传 -->
    <dependency>
     <groupId>commons-fileupload</groupId>
     <artifactId>commons-fileupload</artifactId>
     <version>1.3.1</version>
    </dependency>
    <dependency>
     <groupId>commons-io</groupId>
     <artifactId>commons-io</artifactId>
     <version>2.4</version>
    </dependency>

    二、创建生成二维码接口(接口参数为二维码内容,通常是URL)

    /**
     * 生成二维码
     * google zxing 实现
     * @param text
     * @return
     */
    @RequestMapping(value = "/qrcode/encode", method = RequestMethod.POST)
    public void encodeQrCode(String text, HttpServletResponse response) {
       try {
          // 设置二维码参数
          Map<EncodeHintType, Object> hints = new HashMap<EncodeHintType, Object>();
          hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");
          BitMatrix bitMatrix = new MultiFormatWriter().encode(text, BarcodeFormat.QR_CODE, 150, 150, hints);
          //返回二维码
          MatrixToImageWriter.writeToStream(bitMatrix, "jpg", response.getOutputStream());
       } catch (Exception e) {
          e.printStackTrace();
       }
    }

    三、创建二维码解码接口(直接返回解码后的二维码内容)

    /**
     * 二维码图片解码
     * google zxing 实现
     * @param qrImg
     * @return
     */
    @RequestMapping(value = "/qrcode/decode", method = RequestMethod.POST)
    public String decodeQrCode(MultipartFile qrImg) {
       if (!qrImg.isEmpty()) {
          try {
             BufferedImage image = ImageIO.read(qrImg.getInputStream());
    
             BinaryBitmap binaryBitmap = new BinaryBitmap(new HybridBinarizer(new BufferedImageLuminanceSource(image)));
    
             // 定义二维码的参数:
             HashMap<DecodeHintType, Object> hints = new HashMap<>();
             // 定义字符集
             hints.put(DecodeHintType.CHARACTER_SET, "utf-8");
    
             Result result = new MultiFormatReader().decode(binaryBitmap, hints);
    
             return result.getText();
          } catch (Exception e) {
             e.printStackTrace();
          }
       }
    
       return null;
    }
  • 相关阅读:
    网站术语
    移动web开发入门
    Bootstrap研究3基础html元素
    我所理解的jQuery(3)jQuery的构建
    你好,2011
    Bootstrap研究0概述
    Bootstrap研究2布局系统杂记
    我所理解的jQuery(2)谈jQuery的整体设计,驳"侵入性太强"
    winxp等操作系统下数据库文件 迁移到 win7下,附加时发生Error: 5123 的解决方法
    Bootstrap研究1精巧的网格布局系统
  • 原文地址:https://www.cnblogs.com/gdufs/p/7236205.html
Copyright © 2011-2022 走看看