2011-12-02 14 views
12

Ho una matrice di byte e ho bisogno di convertirlo in un Android Drawable. Come posso eseguire questa conversione?Come creare un Drawable dal byte []? (Android)

Ecco quello che ho provato ma senza successo:

byte[] b = getByteArray(); 
ByteArrayInputStream is = new ByteArrayInputStream(b); 
Drawable drw = Drawable.createFromStream(is, "articleImage"); 

DRW è sempre nullo!

EDIT:

mio byte [] è stato effettivamente danneggiato/incompleta, che era il problema.

+0

Sei sicuro che 'b' contiene dati significativi? –

+2

il tuo byte [] è corrotto, probabilmente dalla conversione inutile a una stringa, che non è idempotente se stai cambiando la codifica nel mezzo di essa. – njzk2

risposta

1

Hai davvero bisogno di un Drawable? Se Bitmap può andare bene, allora:

Bitmap bitmap = BitmapFactory.decodeStream(is); 
24

Se il byte[] b è contiene imagedata allora si può anche provare questo,

Drawable image = new BitmapDrawable(BitmapFactory.decodeByteArray(b, 0, b.length)); 

EDIT

costruttore BitmapDrawable senza risorse è ormai deprecato, così utilizzare invece:

Drawable image = new BitmapDrawable(getResources(),BitmapFactory.decodeByteArray(b, 0, b.length)); 

Prova questo e fammi sapere cosa succede,

+0

Non restituisce più null, restituisce un oggetto drawable, ma non viene visualizzata alcuna immagine quando la stampo sullo schermo. In realtà ho un Blob in un database, lo converto in String, quindi in byte [], quindi in Drawable. Sarà un dolore capire dove potrebbe essere l'errore. –

+0

e che ne dici se usi la matrice di byte diretta per creare drawable senza che si converta in string ..? – user370305

+0

E memorizza anche l'array di byte direttamente in sqlite db come tipo blob, prova questo, vediamo cosa succede ... – user370305

Problemi correlati