首页 > 解决方案 > 尝试使用 base64 编码显示从服务器检索的图像但无法显示正确的图像

问题描述

这些是我的编码和解码方法。

public String encodeBase64(Bitmap bit){
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    bit.compress(Bitmap.CompressFormat.PNG, 100, baos); // Could be Bitmap.CompressFormat.PNG or Bitmap.CompressFormat.WEBP
    byte[] bai = baos.toByteArray();

    return Base64.encodeToString(bai, Base64.DEFAULT);
}
public Bitmap decodeBase64(String base64Image){
    byte[] data = Base64.decode(base64Image, Base64.DEFAULT);
    Bitmap bm;
    BitmapFactory.Options opt = new BitmapFactory.Options();
    opt.inMutable = true;
    bm = BitmapFactory.decodeByteArray(data, 0, data.length, opt);
    return bm;
}

这是来自位图的编码数据

iVBORw0KGgoAAAANSUhEUgAABLAAAAdcCAYAAAC7T3KrAAAABHNCSVQICAgIfAhkiAAAIABJREFU
eJzswQEBAAAAgJD+r+4ICgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA.... etc

但是我从服务器得到的数据看起来像这样

{"type":"Buffer","data":[105,86,66,79,82,119,48,75,71,103,111,65,65,65,... etc

我可以获得纯数据或类型和数据 json 对象。我试图解码两者。当我尝试使用类型和数据进行解码时,它给了我一个空位图,当我解码原始数据时,只有图像不显示,但似乎没有任何崩溃。

我是否需要在解码之前检索所有这些数组编号并将它们转换为字符?我读过其他帖子,听起来很直截了当,只需编码然后解码。

标签: javaandroidbitmapbase64

解决方案


推荐阅读