2011-12-02 24 views
12

Tôi có một mảng byte và tôi cần chuyển đổi nó thành Android Drawable. Làm cách nào tôi có thể thực hiện chuyển đổi này?Làm thế nào để tạo một Drawable từ byte []? (Android)

Đây là những gì tôi đã cố gắng nhưng không thành công:

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

DRW luôn luôn là null!

EDIT:

My byte [] thực sự bị hỏng/không đầy đủ, đó là vấn đề.

+0

Bạn có chắc chắn rằng 'b' chứa dữ liệu có ý nghĩa không? –

+2

byte [] của bạn bị hỏng, có thể là do việc chuyển đổi vô dụng thành một chuỗi, mà không phải là idempotent nếu bạn đang thay đổi mã hóa ở giữa nó. – njzk2

Trả lời

1

Bạn có thực sự cần một bản vẽ không? Nếu Bitmap có thể phù hợp, sau đó:

Bitmap bitmap = BitmapFactory.decodeStream(is); 
24

Nếu bạn byte[] b là chứa imageData sau đó bạn cũng có thể thử này,

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

EDIT

constructor BitmapDrawable mà không cần Tài hiện đang bị phản đối, Vì vậy sử dụng thay thế này:

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

Hãy thử điều này và cho tôi biết điều gì sẽ xảy ra,

+0

Nó không trả về null nữa, nó trả về một đối tượng có thể kéo được, nhưng không có hình nào được hiển thị khi tôi in nó trên màn hình. Tôi thực sự có một Blob trong một cơ sở dữ liệu, tôi chuyển nó thành String, sau đó thành byte [], sau đó là Drawable. Nó sẽ là một nỗi đau để tìm ra nơi mà các lỗi có thể được. –

+0

và những gì về nếu bạn sử dụng mảng byte trực tiếp để tạo drawable mà không có nó chuyển đổi thành chuỗi ..? – user370305

+0

Và cũng lưu trữ mảng byte trực tiếp trong sqlite db như blob loại, hãy thử này, hãy xem những gì đang xảy ra ... – user370305