【发布时间】:2016-02-10 02:25:59
【问题描述】:
我有一个应用程序,其中包含在用户退出时需要保存的图像。我想我会获取位图并将它们作为 base64 字符串存储在数据库中,所以我在网上找到了以下方法来做到这一点。但是,将base64字符串解码回位图并显示后,它只是全黑,与原始图片不一样。我不明白这是为什么。
public static String encodeTobase64(Bitmap image)
{
Bitmap immagex=image;
ByteArrayOutputStream baos = new ByteArrayOutputStream();
immagex.compress(Bitmap.CompressFormat.JPEG, 100, baos);
byte[] b = baos.toByteArray();
String imageEncoded = Base64.encodeToString(b,Base64.DEFAULT);
Log.e("LOOK", imageEncoded);
return imageEncoded;
}
public static Bitmap decodeBase64(String input)
{
byte[] decodedByte = Base64.decode(input, 0);
return BitmapFactory.decodeByteArray(decodedByte, 0, decodedByte.length);
}
【问题讨论】:
-
我认为你的策略还可以,但我会检查原始位图的尺寸、编码字节数组的长度和解码字节数组的长度。
-
我的编码字节数组大小是 1161,我解码的也是 1161。
-
位图尺寸?
-
@DougStevenson 150dp x 50dp
-
我猜这些数字看起来很合理。您也可以尝试 PNG 编码。无论如何,大多数数据库都可以存储二进制数据(blob),因此您不必转换为base64。
标签: java android bitmap base64