/**
* Bitmap转Base64工具类
*/
public class BitmapToBase64 {
private static String result = null;
public static String bitmapToBase64(Bitmap bitmap){
ByteArrayOutputStream baos = null;
try {
if (bitmap != null) {
baos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
baos.flush();
baos.close();
byte[] bitmapBytes = baos.toByteArray();
result = android.util.Base64.encodeToString(bitmapBytes, android.util.Base64.DEFAULT);
}
} catch (IOException e) {
e.printStackTrace();
} catch (IllegalArgumentException e){
e.printStackTrace();
} finally {
try {
if (baos != null) {
baos.flush();
baos.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return result;
}
}
Base64转Bitmap
public class Base64ToBitmap {
public static Bitmap base64ToBitmap(String base64Data) {
byte[] bytes = Base64.decode(base64Data, Base64.DEFAULT);
return BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
}
}
设置两个按钮
btnToBase64.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//打开相册
Intent intent = new Intent(Intent.ACTION_PICK, null);
intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "image/*");
startActivityForResult(intent, 1);//1 resultcode 我们自己定义
}
});
btnToBitmap.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String strBase64 = editText.getText().toString();
try {
Bitmap bitResult = Base64ToBitmap.base64ToBitmap(strBase64);//base64转Bitmap
ivImgSelect.setImageBitmap(bitResult);//ImageView显示转换成功的图片
} catch (Exception e){
e.printStackTrace();
}
}
});
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == 1){
// 从相册返回的数据
if (data != null) {
Uri uri = data.getData();
ivImgSelect.setImageURI(data.getData());
}
bitmap = ((BitmapDrawable) ((ImageView) ivImgSelect).getDrawable()).getBitmap();
strBase64 = BitmapToBase64.bitmapToBase64(bitmap);
editText.setText(strBase64);
Log.d("code",editText.getText().toString());
}
}
有base64格式的图片数据是“data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAEBAQEBAQEBAQ…==”这种格式的。
在上面的代码中开头的“data:image/jpeg;base64,”这一部分是不包含在内的;也就是说以上的代码中,如果你的base64格式开头中含有“data:image/jpeg;base64,”,是无法转为Bitmap的;从Bitmap转出来的base64格式的图片数据也是不包含“data:image/jpeg;base64,”,直接从“/9j/4AAQSkZJ…”开始的