2011-12-02 14 views
12

Tengo una matriz de bytes y necesito convertirla en Android Drawable. ¿Cómo puedo realizar esta conversión?Cómo crear un Drawable de byte []? (Android)

Esto es lo que he intentado pero sin éxito:

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

drw siempre es nulo!

EDIT:

Mi byte [] en realidad estaba corrompido/incompleta, ese era el problema.

+0

¿Está seguro de que 'b' contiene datos significativos? –

+2

su byte [] está dañado, probablemente de la conversión inútil a una cadena, que no es idempotente si está cambiando la codificación en el medio de ello. – njzk2

Respuesta

1

¿Realmente necesita un Drawable? Si Bitmap se ajusta, a continuación:

Bitmap bitmap = BitmapFactory.decodeStream(is); 
24

Si su byte[] b es contiene imagedata, entonces también puede probar esto,

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

EDITAR

constructor BitmapDrawable con Recursos de ahora es obsoleto, tanto use esto en su lugar:

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

Pruebe esto y avíseme qué sucede,

+0

Ya no devuelve nulo, devuelve un objeto dibujable, pero no se muestra ninguna imagen cuando lo imprimo en la pantalla. De hecho, tengo un Blob en una base de datos, lo convierto en String, luego en byte [], luego en Drawable. Será doloroso descubrir dónde puede estar el error. –

+0

y ¿qué pasa si usas una matriz directa de bytes para crear dibujable sin que se convierta en una cadena ...? – user370305

+0

Y también almacenar matriz de bytes directamente en sqlite db como tipo de blob, intente esto, veamos qué pasa ... – user370305

Cuestiones relacionadas