1、导入zxing包,相信不必多说,我用的maven
<!--ZXing框架-->
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>core</artifactId>
<version>3.3.0</version>
</dependency>
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>javase</artifactId>
<version>3.3.0</version>
</dependency>
2、后台
特别说明一下,你也可以return 图片格式(无需多言,代码删减一下就OK了)需要过一下数据库,但是考虑到现在二维码都是实时的,图片不需要存,所以我们用base64编码的形式(return 字符串)。待会前台在显示,看下文。
private String createImageByBase64(String url) {//url就是二维码解析后的路径
Hashtable<EncodeHintType,Object> hints = new Hashtable<EncodeHintType, Object>();
hints.put(EncodeHintType.CHARACTER_SET,"UTF-8");
hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);//容错率
hints.put(EncodeHintType.MARGIN, 0); //白边
ByteArrayOutputStream os = null;
BufferedImage bufferedImage = null;
byte b[] = null;
String str = null;
try {
BitMatrix bitMatrix = new MultiFormatWriter().encode(url, BarcodeFormat.QR_CODE,200,200,hints);
int width = bitMatrix.getWidth();
int height = bitMatrix.getHeight();
bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
for (int x = 0; x < width; x++) {
for (int y = 0; y < height; y++) {
bufferedImage.setRGB(x, y, bitMatrix.get(x, y) ? 0xFF000000 : 0xFFFFFFFF);//二维码部分颜色
}
}
//把图片换成bit流
os = new ByteArrayOutputStream();
ImageIO.write(bufferedImage, "png", os);
b = os.toByteArray();
str = new BASE64Encoder().encode(b);
return str;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
3、前台
<img src=“data:image/png;base64,str”/>