如何使用 Glide 通过字节数组加载图像?
How to load image through byte array using 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..."
上面定义的这个字符串是我从网络接收的实际图像的字节 API。
我正像这样将此字符串转换为字节数组
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 代码。
假设您的 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);
您可以使用以下方法将 Base64
字符串转换为图像
Glide.with(context)
.load(Base64.decode(base64ImageString, Base64.DEFAULT))
.asBitmap()
.placeholder(R.drawable.ic_broken)
.into(rowImageView);
如果您在 .asBitmap()
上遇到错误,请像这样使用它
Glide.with(this)
.asBitmap()
.load(imageAsBytes)
.into(image)
Kotlin 方式:
val imageByteArray = Base64.decode(sampleBase64ImageString, Base64.DEFAULT)
Glide.with(this).load(imageByteArray).into(imageView)
我做的有点不同
byte[] bytes = Glide.with(context)
.as(byte[].class)
.load(url)
.submit()
.get();
字节已准备好写入文件。
我有图像内容 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..."
上面定义的这个字符串是我从网络接收的实际图像的字节 API。
我正像这样将此字符串转换为字节数组
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 代码。
假设您的 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);
您可以使用以下方法将 Base64
字符串转换为图像
Glide.with(context)
.load(Base64.decode(base64ImageString, Base64.DEFAULT))
.asBitmap()
.placeholder(R.drawable.ic_broken)
.into(rowImageView);
如果您在 .asBitmap()
上遇到错误,请像这样使用它
Glide.with(this)
.asBitmap()
.load(imageAsBytes)
.into(image)
Kotlin 方式:
val imageByteArray = Base64.decode(sampleBase64ImageString, Base64.DEFAULT)
Glide.with(this).load(imageByteArray).into(imageView)
我做的有点不同
byte[] bytes = Glide.with(context)
.as(byte[].class)
.load(url)
.submit()
.get();
字节已准备好写入文件。