生成二维码返回二维码图片base64

 1 import com.google.zxing.BarcodeFormat;
 2 import com.google.zxing.EncodeHintType;
 3 import com.google.zxing.MultiFormatWriter;
 4 import com.google.zxing.WriterException;
 5 import com.google.zxing.client.j2se.MatrixToImageWriter;
 6 import com.google.zxing.common.BitMatrix;
 7 import sun.misc.BASE64Encoder;
 8 import java.io.ByteArrayOutputStream;
 9 import java.io.IOException;
10 import java.util.HashMap;
11 import java.util.Map;
12 
13 public final class QrCodeUtils {
14 
15     /**
16      * 生成二维码Png图片的Base64
17      *
18      * @param content 二维码内容
19      * @param width   宽
20      * @param height  高
21      * @return 二维码Png图片的Base64
22      */
23     public static String generateQrCodeBase64(String content, int width, int height) {
24         //设置图片的文字编码以及内边框
25         Map<EncodeHintType, Object> hints = new HashMap<>();
26         //编码
27         hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");
28         //边框距
29         hints.put(EncodeHintType.MARGIN, 0);
30 
31         return generateQrCodeBase64(content, width, height, hints);
32     }
33 
34     /**
35      * 生成二维码Png图片的Base64
36      *
37      * @param content 二维码内容
38      * @param width   宽
39      * @param height  高
40      * @param hints   自定义提供给编码器的其他参数
41      * @return 二维码Png图片的Base64
42      */
43     public static String generateQrCodeBase64(String content, int width, int height, Map<EncodeHintType, Object> hints) {
44         final BitMatrix bitMatrix;
45         String qrCode = "";
46         try {
47             bitMatrix = new MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE, width, height, hints);
48         } catch (WriterException e) {
49             return qrCode;
50         }
51         try (ByteArrayOutputStream outputStream = new ByteArrayOutputStream()) {
52             MatrixToImageWriter.writeToStream(bitMatrix, "PNG", outputStream);
53             byte[] bytes = outputStream.toByteArray();
54             // 2、将字节数组转为二进制
55             BASE64Encoder encoder = new BASE64Encoder();
56             qrCode = encoder.encodeBuffer(bytes).trim();
57         } catch (IOException e) {
58                 e.printStackTrace();
59         }
60         return qrCode;
61     }
62 }
原文地址:https://www.cnblogs.com/sunxun001/p/13085285.html