前端:
传入对应得参数
后端:
para–前端传入的参数
public String createQrCode(Map para) {
if (para == null || para.get("url") == null || StringUtils.isBlank(para.get("url").toString())) {
throw new AppException("请选择操作项");
}
try {
BufferedImage image = QrcodeUtil.createImage(para.get("url").toString(), 350, 350);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
ImageIO.write(image, "jpg", stream);
byte[] content = stream.toByteArray();
Base64Encoder encoder = new Base64Encoder();
String imgSrc = encoder.encode(content);
return "data:image/jpeg;base64," + imgSrc;
} catch (Exception e) {
log.error("生成二维码失败!");
throw new AppException("二维码生成失败!");
}
}
工具类
/**
* 二维码图片的生成
* @param content 链接
* @param qrcode_width 二维码宽
* @param qrcode_height 二维码高
* @return
* @throws Exception
*/
public static BufferedImage createImage(String content, int qrcode_width, int qrcode_height) throws Exception {
Hashtable<EncodeHintType, Object> hints = new Hashtable<EncodeHintType, Object>();
hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);
hints.put(EncodeHintType.CHARACTER_SET, "utf-8");
hints.put(EncodeHintType.MARGIN, 1);
BitMatrix bitMatrix = new MultiFormatWriter().encode(content,
BarcodeFormat.QR_CODE, qrcode_width, qrcode_height, hints);
int width = bitMatrix.getWidth();
int height = bitMatrix.getHeight();
BufferedImage image = new BufferedImage(width, height,
BufferedImage.TYPE_INT_RGB);
for (int x = 0; x < width; x++) {
for (int y = 0; y < height; y++)
image.setRGB(x, y, bitMatrix.get(x, y) ? 0xFF000000
: 0xFFFFFFFF);
}
return image;
}