Android图片和Base64编码的转换
2020/01/21 来源:未知
在日常开发中,有时候我们会用到将图片转成base64编码的时候。本文就讲解一下图片和base64编码的相互转换。
Android在util包中提供了android.util.Base64类,该类提供了四个编码方法,分别是:
public static byte[] encode(byte[] input, int flags)
public static byte[] encode(byte[] input, int offset, int len, int flags)
public static String encodeToString(byte[] input, int flags)
public static String encodeToString(byte[] input, int offset, int len, int flags)
提供了三个解码:
public static byte[] decode(String str, int flags)
public static byte[] decode(byte[] input, int flags)
public static byte[] decode(byte[] input, int offset, int len, int flags)
一、bitmap 转 base64
/**
* 把bitmap转换成Base64字符串
*/
public static String bitmapToString(Bitmap bitmap) {
if (bitmap == null) {
return "";
}
String string = "";
ByteArrayOutputStream btString = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, btString);
byte[] bytes = btString.toByteArray();
string = Base64.encodeToString(bytes, Base64.URL_SAFE);
return string;
}
二、base64转bitmap
/**
* 把Base64字符串转换成bitmap
*/
public static Bitmap base64ToBitmap(String base64String) {
if (TextUtils.isEmpty(base64String)) {
return null;
}
byte[] decode = Base64.decode(base64String.toString().trim(), Base64.URL_SAFE);
Bitmap bitmap = BitmapFactory.decodeByteArray(decode, 0, decode.length);
return bitmap;
}
我们在本地获取了一张图片,可以把他转换成base64上传给服务器,或者在有些离线操作的情况下,可以将图片转换成base64保存在本地数据库中,避免了没有网络而无法保存图片的情形。
Android在util包中提供了android.util.Base64类,该类提供了四个编码方法,分别是:
public static byte[] encode(byte[] input, int flags)
public static byte[] encode(byte[] input, int offset, int len, int flags)
public static String encodeToString(byte[] input, int flags)
public static String encodeToString(byte[] input, int offset, int len, int flags)
提供了三个解码:
public static byte[] decode(String str, int flags)
public static byte[] decode(byte[] input, int flags)
public static byte[] decode(byte[] input, int offset, int len, int flags)
一、bitmap 转 base64
/**
* 把bitmap转换成Base64字符串
*/
public static String bitmapToString(Bitmap bitmap) {
if (bitmap == null) {
return "";
}
String string = "";
ByteArrayOutputStream btString = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, btString);
byte[] bytes = btString.toByteArray();
string = Base64.encodeToString(bytes, Base64.URL_SAFE);
return string;
}
二、base64转bitmap
/**
* 把Base64字符串转换成bitmap
*/
public static Bitmap base64ToBitmap(String base64String) {
if (TextUtils.isEmpty(base64String)) {
return null;
}
byte[] decode = Base64.decode(base64String.toString().trim(), Base64.URL_SAFE);
Bitmap bitmap = BitmapFactory.decodeByteArray(decode, 0, decode.length);
return bitmap;
}
我们在本地获取了一张图片,可以把他转换成base64上传给服务器,或者在有些离线操作的情况下,可以将图片转换成base64保存在本地数据库中,避免了没有网络而无法保存图片的情形。