我有一个图像内容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代码.
让我们说你的base64字符串是
String imageBytes = "HVao14fpmtHSev3OgsrQNsawkFzXNcY3BsfQla6..."
您应该将imageBytes
String 转换为字节数组
byte[] imageByteArray = Base64.decode(imageBytes, Base64.DEFAULT);
之后将其传递imageByteArray
给Glide.
Glide.with(context) .load(imageByteArray) .asBitmap() .placeholder(R.drawable.ic_broken) .into(rowImageView);
您可以Base64
使用以下方法将String 转换为图像
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)