使用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);  }