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;
}
}