web-dev-qa-db-fra.com

Comment charger une image sur un tableau d'octets en utilisant Glide?

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.

20
Adnan Amjad

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);
46
Adnan Amjad

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);
6
Anudeep Samaiya

Si vous obtenez une erreur sur .asBitmap(), utilisez-la comme ceci

             Glide.with(this)
                .asBitmap()
                .load(imageAsBytes)
                .into(image)
2
Zohab Ali

Façon Kotlin:

val imageByteArray = Base64.decode(sampleBase64ImageString, Base64.DEFAULT)
Glide.with(this).load(imageByteArray).into(imageView)
0
B. León