2011-12-02 12 views
12

Mam tablicę bajtów i muszę ją przekonwertować na szufladę z Androidem. Jak mogę wykonać tę konwersję?Jak utworzyć Drawable from byte []? (Android)

Oto co próbowałem ale bez powodzenia:

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

DRW jest zawsze zerowa!

EDIT:

Mam byte [] został faktycznie uszkodzony/niekompletny, że był problem.

+0

Czy jesteś pewien, że 'b' zawiera istotne dane? –

+2

Twój bajt [] jest uszkodzony, prawdopodobnie z bezużytecznej konwersji na ciąg, który nie jest idempotentny, jeśli zmieniasz kodowanie w jego środku. – njzk2

Odpowiedz

1

Czy naprawdę potrzebujesz szuflady? Jeśli bitmapy można dopasować, a następnie:

Bitmap bitmap = BitmapFactory.decodeStream(is); 
24

jeśli Twój byte[] b to zawiera imageData następnie można również spróbować tego,

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

EDIT

BitmapDrawable konstruktor bez Resources jest teraz przestarzała, więc użyj zamiast tego:

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

Spróbuj i daj znać, co się stanie,

+0

Nie zwraca już wartości null, zwraca obiekt ciągnący, ale nie wyświetla się żaden obraz po wydrukowaniu go na ekranie. Faktycznie mam w bazie danych obiekt Blob, konwertuję go na String, potem na bajt [], a następnie na Draw. To będzie trudny do ustalenia, gdzie może być błąd. –

+0

i co jeśli użyjesz tablicy bajtów do utworzenia losowania bez konwersji na ciąg ..? – user370305

+0

A także przechowywać tablicę bajtów bezpośrednio w sqlite db jako typ blob, spróbuj tego, niech zobacz, co się dzieje ... – user370305

Powiązane problemy