2016-01-04 13 views
10

Ho un byte di contenuto dell'immagine [] modulo. Ma quando li carico tramite Glide, vengono visualizzate le immagini non funzionanti. quello che sto facendo è mostrato sotto.Come caricare l'immagine attraverso l'array di byte usando Glide?

Glide.with(context) 
    .load(imageByteArray) 
    .asBitmap() 
    .placeholder(R.drawable.ic_broken) 
    .into(rowImageView); 

imageByteArray converte correttamente in bitmap senza utilizzare la glide. Quindi non c'è niente di sbagliato con l'array di byte dell'immagine.

Per favore, guidami cosa mi manca?

Anche io sto usando Glide biblioteca com.github.bumptech.glide: glide: 3.6.1 e Android libreria di supporto com.android.support:support-v13:23.0.1

Redatta

Ok, questo è quello che sto facendo.

String imageBytes = "HVao14fpmtHSev3OgsrQNsawkFzXNcY3BsfQla6..." 

Questa stringa sopra definita è i byte dell'immagine reale che sto ricevendo dall'API web.

sto convertendo questa stringa in array di byte come questo

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; 
} 

Than sto applicando risultante array di byte "imageByteArray" per Glide codice definito sopra.

+0

prolly, perché non si capisce basi del multithreading ... ma è solo cieco indovinare ... come non ha fornito come si ottiene questo array di byte ... qual è uno scope di questa variabile è usato in qualche tipo di loop .... – Selvin

+0

Capisco. Invece di dare questo tipo di commenti, per favore guidami con una risposta adeguata. Grazie –

+0

quindi si prega di fare la domanda corretta ... come questo codice fornisce un'immagine NON rotto mi forma (ho usato il codice dalla tua domanda e le librerie dalla domanda) – Selvin

risposta

20

permette di dire la stringa base64 è

String imageBytes = "HVao14fpmtHSev3OgsrQNsawkFzXNcY3BsfQla6..." 

Si dovrebbe convertire imageBytes String per array di byte attraverso

byte[] imageByteArray = Base64.decode(imageBytes, Base64.DEFAULT); 

poi passare questo imageByteArray a Glide.

Glide.with(context) 
    .load(imageByteArray) 
    .asBitmap() 
    .placeholder(R.drawable.ic_broken) 
    .into(rowImageView); 
+0

@Andan Amjad Ho lo stesso problema, ho provato questo snippet, ma mostrando errore, non posso risolvere .asBitmap(), puoi aiutarmi? – Gibs

2

È possibile convertire Base64 String per l'immagine utilizzando il seguente

Glide.with(context) 
    .load(Base64.decode(base64ImageString, Base64.DEFAULT)) 
    .asBitmap() 
    .placeholder(R.drawable.ic_broken) 
    .into(rowImageView); 
+1

cosa c'è di diverso nella tua risposta rispetto a quella accettata ?! – Tima

+0

Niente, fa solo una variabile in meno- –

Problemi correlati