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