提供一个生成二维码的工具类
@Slf4j
public class QrCodeUtils {
public static String creatRrCode(String content, int width, int height,String fileSuffix) {
log.info("生成二维码开始,content={}, width={}, height={}, fileSuffix={}", content, width, height, fileSuffix);
String binary;
Hashtable<EncodeHintType, Object> hints = new Hashtable<>();
hints.put(EncodeHintType.CHARACTER_SET, "utf-8");
hints.put(EncodeHintType.MARGIN,0);
try {
BitMatrix bitMatrix = new MultiFormatWriter().encode(
content, BarcodeFormat.QR_CODE, width, height, hints);
ByteArrayOutputStream out = new ByteArrayOutputStream();
BufferedImage image = toBufferedImage(bitMatrix);
ImageIO.write(image, fileSuffix, out);
byte[] bytes = out.toByteArray();
BASE64Encoder encoder = new BASE64Encoder();
binary = encoder.encodeBuffer(bytes).trim();
log.debug("生成二维码成功:{}", binary);
} catch (Exception e) {
log.error("生成二维码异常,异常信息为",e);
throw BusinessException.create(2001,"二维码生成异常!");
}
return binary.trim().replaceAll("\n","");
}
public static BufferedImage toBufferedImage(BitMatrix matrix) {
int width = matrix.getWidth();
int height = matrix.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, matrix.get(x, y) ? 0xFF000000 : 0xFFFFFFFF);
}
}
return image;
}
}