如何使用 Glide 通过字节数组加载图像?

新手上路,请多包涵

我有一个图像内容 byte[] 形式。但是当我通过 Glide 加载它们时,会显示损坏的图像。我在做什么如下所示。

 Glide.with(context)
    .load(imageByteArray)
    .asBitmap()
    .placeholder(R.drawable.ic_broken)
    .into(rowImageView);

imageByteArray 在不使用 glide 的情况下成功转换为位图。所以图像字节数组没有错。

请指导我缺少什么?

我也在使用 Glide 库 com.github.bumptech.glide:glide:3.6.1 和 Android 支持库 com.android.support:support-v13:23.0.1

已编辑

好的,这就是我正在做的。

 String imageBytes = "HVao14fpmtHSev3OgsrQNsawkFzXNcY3BsfQla6..."

上面定义的这个字符串是我从 web API 接收到的实际图像的字节。

我正在将这个 String 转换成这样的字节数组

public static byte[] hexStringToByteArray(String s) {
        int len = s.length();
        byte[] data = new byte[len / 2];
        for (int i = 0; i < len; i += 2) {
            data[i / 2] = (byte) ((Character.digit(s.charAt(i), 16) << 4)
                    + Character.digit(s.charAt(i+1), 16));
        }
        return data;
}

比起我将生成的字节数组“imageByteArray”应用于上面定义的 Glide 代码。

原文由 Adnan Amjad 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.5k
2 个回答

假设您的 base64 字符串是

String imageBytes = "HVao14fpmtHSev3OgsrQNsawkFzXNcY3BsfQla6..."

您应该将 imageBytes 字符串转换为字节数组

byte[] imageByteArray = Base64.decode(imageBytes, Base64.DEFAULT);

然后将这个 imageByteArray 传递给 Glide。

 Glide.with(context)
    .load(imageByteArray)
    .asBitmap()
    .placeholder(R.drawable.ic_broken)
    .into(rowImageView);

原文由 Adnan Amjad 发布,翻译遵循 CC BY-SA 3.0 许可协议

您可以使用以下方法将 Base64 字符串转换为图像

Glide.with(context)
    .load(Base64.decode(base64ImageString, Base64.DEFAULT))
    .asBitmap()
    .placeholder(R.drawable.ic_broken)
    .into(rowImageView);

原文由 Anudeep Samaiya 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题