版权声明:本文为博主原创文章,未经博主允许不得转载。 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);
}