2011-12-02 32 views
12

Bir bayt dizim var ve bunu bir Android Drawable'a dönüştürmem gerekiyor. Bu dönüşümü nasıl yapabilirim?Bayttan [] Çizim nasıl oluşturulur? (Android)

İşte ben başarılı olamadı çalıştı ama ne:

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

drw hep boş!

DÜZENLEME:

My byte [] aslında bu sorun, eksik/bozuktur.

+0

'b' anlamlı veriler içerdiğinden emin misiniz? –

+2

byte'ınız [], muhtemelen, ortasındaki şifrelemeyi değiştiriyorsanız iddiasız olmayan bir dizgeye işe yaramaz dönüşümden kaynaklanır. – njzk2

cevap

1

Gerçekten bir Drawable'a ihtiyacınız var mı? Bitmap sonra sığabilecek ise:

Bitmap bitmap = BitmapFactory.decodeStream(is); 
24

senin byte[] b olduğunu ImageData o zaman da bu deneyebilirsiniz içeriyorsa,

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

DÜZENLEME

Kaynaklar olmadan

BitmapDrawable yapıcı artık önerilmemektedir , Yani bunun yerine aşağıdakileri kullanın:

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

Bunu deneyin ve ne olduğunu bildirin,

+0

Artık null değil, çekilebilir bir nesneyi döndürüyor, ancak ekranda yazdırdığımda hiçbir resim gösterilmiyor. Aslında bir veritabanında bir Blob var, onu String'e, sonra da [], sonra Drawable'a dönüştürüyorum. Hatanın nerede olabileceğini anlamak için bir acı olacaktır. –

+0

ve dize dönüştürmeden, çizilebilir oluşturmak için doğrudan bayt dizininizi kullanıp kullanmadığınızı ..? – user370305

+0

Ve ayrıca bayt dizisi doğrudan sqlite db blob türü olarak depolayın, deneyin, ne olduğunu görelim ... – user370305

İlgili konular