public class Test { public static void main(String[] strings) { Test test = new Test(); test.CreateQrCodevoid("dsc", "D:/", "12306bypass"); test.ReadQrCode("D:/12306bypass/1546931302959_423.png"); } /** * 生成二维码 * @param content 内容 * @param filePath 生成的二维码存放的位置 */ public String CreateQrCodevoid(String content, String rootPath, String filePath) { int width = 300; int height = 300; String format = "png"; //定义二维码的参数 HashMap map = new HashMap(); //设置编码 map.put(EncodeHintType.CHARACTER_SET, "utf-8"); //设置纠错等级 map.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.M); map.put(EncodeHintType.MARGIN, 2); String fileName = null; try { //生成二维码 BitMatrix bitMatrix = new MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE, width, height); //判断文件夹是否存在,不存在则创建 String fullPath = rootPath+filePath; File file1 = new File(fullPath); if(!file1 .exists() && !file1 .isDirectory()){ file1 .mkdirs(); } //新的文件名 fileName = content + System.currentTimeMillis()+"_"+new Random().nextInt(1000)+".png"; //包含文件名的全路径 String fileFolder = fullPath + "/" +fileName; Path file = new File(fileFolder).toPath(); MatrixToImageWriter.writeToPath(bitMatrix, format, file); } catch (WriterException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return fileName; } /** * 读取二维码 * @param path 存放二维码的全路径 * @return */ public Result ReadQrCode(String path) { Result result = null; try { MultiFormatReader multiFormatReader = new MultiFormatReader(); File file = new File(path); BufferedImage image = ImageIO.read(file); //定义二维码参数 Map hints = new HashMap(); hints.put(EncodeHintType.CHARACTER_SET, "utf-8"); //获取读取二维码结果 BinaryBitmap binaryBitmap = new BinaryBitmap(new HybridBinarizer(new BufferedImageLuminanceSource(image))); result = multiFormatReader.decode(binaryBitmap, hints); System.out.println("读取二维码: " + result.toString()); System.out.println("二维码格式: " + result.getBarcodeFormat()); System.out.println("二维码内容: " + result.getText()); } catch (NotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return result; } }