J'ai une forme d'octet [] de contenu d'image. Mais lorsque je les charge dans Glide, des images brisées apparaissent. Ce que je fais est montré ci-dessous.
Glide.with(context)
.load(imageByteArray)
.asBitmap()
.placeholder(R.drawable.ic_broken)
.into(rowImageView);
imageByteArray convertit avec succès en bitmap sans utiliser glide. Donc, il n'y a pas de problème avec tableau d'octets d'image.
S'il vous plaît guidez-moi ce qui me manque?
J'utilise aussi la bibliothèque glide com.github.bumptech.glide: glide: 3.6.1 Et la bibliothèque de support Android com.Android.support:support-v13:23.0.1
Edité
Ok, c'est ce que je fais.
String imageBytes = "HVao14fpmtHSev3OgsrQNsawkFzXNcY3BsfQla6..."
Cette chaîne définie ci-dessus correspond aux octets de l'image réelle que je reçois de l'API Web.
Je convertis cette chaîne en tableau d'octets comme ceci
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;
}
J'applique le tableau d'octets résultant "imageByteArray" au code Glide défini ci-dessus.
Disons que votre chaîne base64 est
String imageBytes = "HVao14fpmtHSev3OgsrQNsawkFzXNcY3BsfQla6..."
Vous devez convertir imageBytes
String en tableau d'octets via
byte[] imageByteArray = Base64.decode(imageBytes, Base64.DEFAULT);
passez ensuite cette imageByteArray
à Glide.
Glide.with(context)
.load(imageByteArray)
.asBitmap()
.placeholder(R.drawable.ic_broken)
.into(rowImageView);
Vous pouvez convertir Base64
String en image à l’aide des éléments suivants:
Glide.with(context)
.load(Base64.decode(base64ImageString, Base64.DEFAULT))
.asBitmap()
.placeholder(R.drawable.ic_broken)
.into(rowImageView);
Si vous obtenez une erreur sur .asBitmap()
, utilisez-la comme ceci
Glide.with(this)
.asBitmap()
.load(imageAsBytes)
.into(image)
Façon Kotlin:
val imageByteArray = Base64.decode(sampleBase64ImageString, Base64.DEFAULT)
Glide.with(this).load(imageByteArray).into(imageView)