Android之Bitmap与Base64互转,压缩

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_36347817/article/details/88394557

最近完成一个调查问卷的小项目,安卓端自然用到了电子签名这样的东西,上传签名的图片,最好还是原数据比较好,所以将全部的Bitmap图片转换成Base64,用于传输8Bit字节码的编码方式。

一般一个签名的转换长度至少也有十万多,要么客户端压缩一下(注释),要么服务器调整一下,应该数据量也不大。

    /**
     * bitmap转为base64
     * @param bitmap
     * @return
     */
    public static String bitmapToBase64(Bitmap bitmap) {
 
        String result = null;
        ByteArrayOutputStream baos = null;
        try {
            if (bitmap != null) {
                baos = new ByteArrayOutputStream();
                //将bitmap放入字节数组流中
                //参数2:压缩率,40表示压缩掉60%; 如果不压缩是100,表示压缩率为0
                bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);

                //将bos流缓存在内存中的数据全部输出,清空缓存
                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;
    }
 
    /**
     * base64转为bitmap
     * @param base64Data
     * @return
     */
    public static Bitmap base64ToBitmap(String base64Data) {
        byte[] bytes = Base64.decode(base64Data, Base64.DEFAULT);
        return BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
    }

猜你喜欢

转载自blog.csdn.net/qq_36347817/article/details/88394557