依据前端传递的数字等生成二维码图片
前端: 传入对应得参数
后端: 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; }
上一篇:
IDEA上Java项目控制台中文乱码