2011-12-02 59 views
12

我有一個字節數組,我需要將它轉換成Android Drawable。我如何執行此轉換?如何從byte []創建Drawable? (Android)

這裏是我試過,但沒有成功:

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

DRW總是空!

編輯:

我的byte []的實際損壞/不完整的,這就是問題所在。

+0

你確定'b'包含有意義的數據嗎? –

+2

你的byte []被破壞了,可能來自無用的轉換爲一個字符串,如果你正在改變編碼的話,這不是冪等的。 – njzk2

回答

1

你真的需要一個Drawable嗎?如果位圖可以適合,則:

Bitmap bitmap = BitmapFactory.decodeStream(is); 
24

如果byte[] b是包含圖象 - 那麼你也可以試試這個,

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

編輯

沒有資源BitmapDrawable構造器現在已經過時,所以,改爲:

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

試試這個,讓我知道發生了什麼,

+0

它不再返回null,它返回一個可繪製的對象,但是當我在屏幕上打印它時沒有顯示圖片。我實際上在數據庫中有一個Blob,我將它轉換爲String,然後轉換爲byte [],然後轉換爲Drawable。找出錯誤的可能性是一件痛苦的事情。 –

+0

以及如果您使用直接字節數組創建繪圖而不轉換爲字符串呢? – user370305

+0

並且還將字節數組直接存儲在sqlite數據庫中作爲blob類型,試試這個,讓我們看看發生了什麼...... – user370305

相關問題