zoukankan      html  css  js  c++  java
  • 转换为base64格式

    package com.hxh.basic.project.Test02;
    
    import com.alibaba.fastjson.JSON;
    import com.google.zxing.BarcodeFormat;
    import com.google.zxing.EncodeHintType;
    import com.google.zxing.client.j2se.MatrixToImageWriter;
    import com.google.zxing.common.BitMatrix;
    import com.google.zxing.qrcode.QRCodeWriter;
    import com.sun.org.apache.xerces.internal.impl.dv.util.Base64;
    
    import java.io.ByteArrayOutputStream;
    import java.util.Hashtable;
    
    public class Test {
        public static void main(String[] args) {
            String str = "123456";
            getQRCodeImage(str);
        }
    
        /**
         * QR_CODE_DEFAULT_WIDTH 二维码默认宽
         */
        private static final int QR_CODE_DEFAULT_WIDTH = 320;
    
        /**
         * QR_CODE_DEFAULT_CHARSET 二维码默认的字符集
         */
        private static final String QR_CODE_DEFAULT_CHARSET = "utf-8";
    
        /**
         * 生成二维码,返回字节流
         *
         * @param inputString
         * @return String
         */
        public static String getQRCodeImage(String inputString) {
            System.out.println(String.format("UserServiceImpl.getQRCodeImage request inputString=%s", inputString));
    
            String result = "";
            try {
                QRCodeWriter qrCodeWriter = new QRCodeWriter();
                Hashtable hints = new Hashtable();
                hints.put(EncodeHintType.CHARACTER_SET, QR_CODE_DEFAULT_CHARSET);
                BitMatrix bitMatrix = qrCodeWriter.encode(inputString, BarcodeFormat.QR_CODE, QR_CODE_DEFAULT_WIDTH, QR_CODE_DEFAULT_WIDTH, hints);
                bitMatrix = deleteWhite(bitMatrix);
                ByteArrayOutputStream pngOutputStream = new ByteArrayOutputStream();
                MatrixToImageWriter.writeToStream(bitMatrix, "png", pngOutputStream);
                result = "data:image/png;base64," + Base64.encode(pngOutputStream.toByteArray());
                System.out.println(String.format("base64 res=%s", result));
            } catch (Exception e) {
                System.out.println(String.format("UserServiceImpl.getQRCodeImage exception! 错误信息=%s", e));
                System.out.println(String.format("com.jd.crm.gateway.service.user.impl.UserServiceImpl.getQRCodeImage(java.lang.String):result=%s", JSON.toJSON(result)));
                return "错误";
            }
            return result;
        }
    
        /**
         * 二维码方法封装
         *
         * @param matrix
         * @return BitMatrix
         */
        private static BitMatrix deleteWhite(BitMatrix matrix) {
            int[] rec = matrix.getEnclosingRectangle();
            int resWidth = rec[2] + 1;
            int resHeight = rec[3] + 1;
    
            BitMatrix resMatrix = new BitMatrix(resWidth, resHeight);
            resMatrix.clear();
            for (int i = 0; i < resWidth; i++) {
                for (int j = 0; j < resHeight; j++) {
                    if (matrix.get(i + rec[0], j + rec[1])) {
                        resMatrix.set(i, j);
                    }
                }
            }
            return resMatrix;
        }
    }
    
    // TODO 输出:UserServiceImpl.getQRCodeImage request inputString=123456
    // TODO 输出:base64 res=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOgAAADoAQAAAADN0pXVAAABEklEQVR42u3ZsRGDMAwFUHEUKRmBUTIaHo1RGIEyBYeCJDu2ORJjp/1qkuO5UhR/A0ShHmyfHc/hUkfQCh1Zaz503GhaO/mqtULrdLPmisaFR03QZpUaoP+rH1NoqyZj2rOzPl/tDNCCJnkUdtHrtIL+Vk5qsWSPBa1QGVNetc+82MTyi/xCaIVKO92w09M666TPppP/FaD3VHZRUe2zT3Yivw1AK5T5SHbrsw4v73Yz1EvLoRX6OWKSjanfBtJkh97SPH2ibudkhxY0OSPJJVHZUJf+fNqEljR9vpHkkYY8tEqz5xsu5pE9c4M2qDY36TO0WTXkOdxL2mkTel+z/344I426EFqj+buJ78kOLSj/qjdgrUGR/YlwbwAAAABJRU5ErkJggg==
    
    
  • 相关阅读:
    tesseract动态库依赖关系
    面向对象分析与设计笔记(一)
    用例图笔记
    矩阵乘法求解
    二维数组 Visual Studio怎么监视
    cmake windows caffe cuda版本的切换
    Python入门
    Python基本数据类型
    【LabVIEW】二进制文件的存储与读取方法
    【LabVIEW】文件对话框点击取消后报错、实现自定义文件名
  • 原文地址:https://www.cnblogs.com/Twittery/p/14831932.html
Copyright © 2011-2022 走看看