java - ejemplo - ¿Cómo cargar una imagen a través de un array de bytes usando Glide?
glide vs picasso (4)
Tengo un contenido de la imagen byte []. Pero cuando los cargo a través de Glide se muestran imágenes rotas. Lo que estoy haciendo se muestra a continuación.
Glide.with(context)
.load(imageByteArray)
.asBitmap()
.placeholder(R.drawable.ic_broken)
.into(rowImageView);
imageByteArray se convierte exitosamente a mapa de bits sin usar glide. Así que no hay ningún error con la matriz de bytes de imagen.
Por favor guíame lo que me falta?
También estoy usando la biblioteca de Glide com.github.bumptech.glide: glide: 3.6.1 y la biblioteca de soporte de Android com.android.support:support-v13:23.0.1
Editado
Ok, esto es lo que estoy haciendo.
String imageBytes = "HVao14fpmtHSev3OgsrQNsawkFzXNcY3BsfQla6..."
Esta cadena definida anteriormente es bytes de la imagen real que recibo de la API web.
Estoy convirtiendo esta cadena en una matriz de bytes como esta
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;
}
Que estoy aplicando la matriz de bytes resultante "imageByteArray" al código de Glide definido anteriormente.
Digamos que su cadena base64 es
String imageBytes = "HVao14fpmtHSev3OgsrQNsawkFzXNcY3BsfQla6..."
Debería convertir la cadena imageBytes
a una matriz de bytes a través de
byte[] imageByteArray = Base64.decode(imageBytes, Base64.DEFAULT);
luego pasa este imageByteArray
a Glide.
Glide.with(context)
.load(imageByteArray)
.asBitmap()
.placeholder(R.drawable.ic_broken)
.into(rowImageView);
Kotlin forma:
val imageByteArray = Base64.decode(sampleBase64ImageString, Base64.DEFAULT)
Glide.with(this).load(imageByteArray).into(imageView)
Puede convertir la Cadena Base64
a imagen usando lo siguiente
Glide.with(context)
.load(Base64.decode(base64ImageString, Base64.DEFAULT))
.asBitmap()
.placeholder(R.drawable.ic_broken)
.into(rowImageView);
Si está obteniendo un error en .asBitmap()
simplemente .asBitmap()
así
Glide.with(this)
.asBitmap()
.load(imageAsBytes)
.into(image)