使用zxing生成二維碼不帶logo

  • 2019 年 12 月 2 日
  • 筆記

一、首先在maven中添加一下jar包

<dependency>      <groupId>com.google.zxing</groupId>      <artifactId>core</artifactId>      <version>3.3.0</version>  </dependency>

然後新建個工具類 QrcodeUtil

// 圖片寬度的一半  private static final int width = 500;  private static final int height = 500;  private static final int BLACK = 0xFF000000;  private static final int WHITE = 0xFFFFFFFF;  //生成二維碼存放路徑  private static final String destImagePath="d:\qrcode.jpg";  //掃描二維碼跳轉頁面  private static final String content="http://www.baidu.com";    // 二維碼寫碼器  private static MultiFormatWriter multiWriter = new MultiFormatWriter();
/**   * 生成二維碼   *   * @param content       要生成二維碼的內容   * @param width         二維碼的寬度   * @param height        二維碼的高   * @param destImagePath 生成二維碼圖片的路徑   * @return 是否生成成功   */  public static boolean encode(String content, int width, int height, String destImagePath) {      try {          long startTime = System.currentTimeMillis();          File destImagePaths = new File(destImagePath);          //生成二維碼圖片文件(不帶LOGO)          ImageIO.write(genQrcode(content, width, height), "jpg",destImagePaths );          System.out.println("生成成功!");          System.out.println("耗時: " + (System.currentTimeMillis()-startTime)/1000.0 + "s");          System.out.println("生成文件路徑: " + destImagePaths.getAbsolutePath());          return true;      } catch (Exception e) {          e.printStackTrace();          return false;      }  }
/**   * 生成二維碼圖片文件(不帶LOGO)   *   * @param content 要生成二維碼的內容   * @param width   二維碼的高度   * @param height  二維碼的寬度   * @return 二維碼圖片   * @throws WriterException 異常   */  private static BufferedImage genQrcode(String content, int width, int height) throws WriterException {      Map<EncodeHintType, String> hints = new HashMap<>();      hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");        //根據高度和寬度生成像素矩陣      BitMatrix bitMatrix = multiWriter.encode(content, BarcodeFormat.QR_CODE, width, height, hints);        BufferedImage image = new BufferedImage(bitMatrix.getWidth(), bitMatrix.getHeight(), BufferedImage.TYPE_INT_RGB);      for (int x = 0; x < bitMatrix.getWidth(); x++) {          for (int y = 0; y < bitMatrix.getHeight(); y++) {              //填充黑白兩色              image.setRGB(x, y, bitMatrix.get(x, y) ? BLACK : WHITE);          }      }      return image;  }

main方法

public static void main(String[] args) {      // 依次為內容,寬,長,儲存路徑      QrcodeUtil.encode(content, width, height, destImagePath);  }