【问题标题】:Encoding and decoding a bitmap to base64, the final bitmap is just all black将位图编码解码为base64,最终的位图只是全黑
【发布时间】: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


【解决方案1】:

(我没有评论权限..所以我在这里问)

在编码方式中,为什么要用JPG压缩?

我认为只是简单的位图-> base64 字符串。

base64 字符串 -> 位图就可以了。

但我不明白为什么会有 JPEG 压缩

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-02-27
  • 2015-05-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-03
  • 1970-01-01
相关资源
最近更新 更多