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

时间:2016-01-04 10:18:46

标签: java android android-glide

我有一个图像内容byte []表单。但是当我通过Glide加载它们时,会显示破碎的图像。我正在做的事情如下所示。

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

imageByteArray成功转换为位图而不使用滑动。所以图像字节数组没有错。

请指导我缺少什么?

我也在使用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代码。

5 个答案:

答案 0 :(得分:51)

让我们说你的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);

答案 1 :(得分:8)

您可以使用以下

Base64字符串转换为图像
Glide.with(context)
    .load(Base64.decode(base64ImageString, Base64.DEFAULT))
    .asBitmap()
    .placeholder(R.drawable.ic_broken)
    .into(rowImageView);

答案 2 :(得分:3)

如果您在//component.ts constructor(db: AngularFirestore) { this.contactCollection = db.collection('contacts'); this.contact = this.contactCollection.doc('YYlKh7Gg7khN8L636iYE').valueChanges(); } //viewTemplate.ts {{this.contact | async}} 上遇到错误,只需像这样使用它

<hr>

答案 3 :(得分:0)

科特琳的方式:

val imageByteArray = Base64.decode(sampleBase64ImageString, Base64.DEFAULT)
Glide.with(this).load(imageByteArray).into(imageView)

答案 4 :(得分:0)

我做的有点不同

pako.gzip(JSON.stringify(data)

字节已准备好用于文件写入。

相关问题