Android将网络url转换为base64

由于页面是与H5交互完成的,所有需要客户端根据返回的URL,转换为一个Base64格式的字符串返回给H5端。

所以,我们需要借助Google的zxing工具包:

在app的build.gradle下添加依赖:

compile 'com.google.zxing:core:3.3.0'

1.封装一个生成二维码的工具类,构建creareQRImage方法,只需要传入一个url

public static Bitmap createQRImage(String url,final int width, final int height
) {
    try {
        // 判断URL合法性
        if (url == null || "".equals(url) || url.length() < 1) {
            return null;
        }
        Hashtable, String> hints = new Hashtable, String>();
        hints.put(EncodeHintType.CHARACTER_SET, "utf-8");
        // 图像数据转换,使用了矩阵转换
        BitMatrix bitMatrix = new QRCodeWriter().encode(url,
                BarcodeFormat.QR_CODE, width, height, hints);
        int[] pixels = new int[width * height];
        // 下面这里按照二维码的算法,逐个生成二维码的图片,
        // 两个for循环是图片横列扫描的结果
        for (int y = 0; y < height; y++) {
            for (int x = 0; x < width; x++) {
                if (bitMatrix.get(x, y)) {
                    pixels[y * width + x] = 0xff000000;
                } else {
                    pixels[y * width + x] = 0xffffffff;
                }
            }
        }
        // 生成二维码图片的格式,使用ARGB_8888
        Bitmap bitmap = Bitmap.createBitmap(width, height,
                Bitmap.Config.ARGB_8888);
        bitmap.setPixels(pixels, 0, width, 0, 0, width, height);
        return bitmap;
    } catch (WriterException e) {
        e.printStackTrace();
    }
    return null;
}

2.根据bitmap转换成base64:

public static String bitmapToBase64(Bitmap bitmap) {
    String result = null;
    ByteArrayOutputStream baos = null;
    try {
        if (bitmap != null) {
            baos = new ByteArrayOutputStream();
            bitmap.compress(Bitmap.CompressFormat.PNG, 100, baos);
            baos.flush();
            baos.close();
            byte[] bitmapBytes = baos.toByteArray();
            result = Base64.encodeToString(bitmapBytes, Base64.DEFAULT);
        }
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        try {
            if (baos != null) {
                baos.flush();
                baos.close();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    return result;
}

3.调用工具类:

Bitmap ubm= QRUtil.createQRImage(getQRinfo,350,350);
String bResult=CommentUtils.bitmapToBase64(ubm);
String msg="data:image/png;base64,"+bResult;
LogUtil.i("base64---"+msg);
注意:传个H5的时候要加上前缀。

你可能感兴趣的:(Android将网络url转换为base64)