生成二維碼返回二維碼圖片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 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM