/**
* 二维码生成/解码器
*/
public class ZxingQRCode {
/**
* 生成二维码
* @param contents 内容
* @param width 宽度
* @param height 高度
* @param imgPath 保存路劲
*/
public void encode(String contents, int width, int height, String imgPath) {
Hashtable<EncodeHintType, Object> hints = new Hashtable();
// 指定纠错等级
hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.L);
// 指定显示格式为GBK
hints.put(EncodeHintType.CHARACTER_SET, "GBK");
try {
BitMatrix bitMatrix = new MultiFormatWriter().encode(contents,
BarcodeFormat.QR_CODE, width, height, hints);
//生成png格式的图片保存到imgPath路径位置
MatrixToImageWriter.writeToStream(bitMatrix, "png",
new FileOutputStream(imgPath));
System.out.println("QR Code encode sucsess! the img's path is "+imgPath);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 解析二维码
* @param imgPath
* @return
*/
public String decode(String imgPath) {
BufferedImage image = null;
Result result = null;
try {
//读取图片
image = ImageIO.read(new File(imgPath));
if (image == null) {
System.out.println("the decode image may be not exit.");
}
LuminanceSource source = new BufferedImageLuminanceSource(image);
BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));
Hashtable<DecodeHintType, Object> hints = new Hashtable();
//设置显示格式为GBK
hints.put(DecodeHintType.CHARACTER_SET, "GBK");
//进行解码
result = new MultiFormatReader().decode(bitmap, hints);
return result.getText();//返回结果信息
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public static void main(String[] args) {
ZxingQRCode ORCode = new ZxingQRCode();
ORCode.encode("6927594620190", 150, 150,"D:/test/111.png");
System.out.println(ORCode.decode("D:/test/1.png"));
}
}
java 二维码生成/解码器
最新推荐文章于 2024-05-25 12:01:51 发布