David Shellabarger David Shellabarger - 4 months ago 9
Android Question

Drawable to byte[]

I have an image from the web in an

ImageView
. It is very small (a favicon) and I'd like to store it in my SQLite database.
I can get a
Drawable
from
mImageView.getDrawable()
but then I don't know what to do next. I don't fully understand the
Drawable
class in Android.

I know I can get a byte array from a
Bitmap
like:

Bitmap defaultIcon = BitmapFactory.decodeStream(in);

ByteArrayOutputStream stream = new ByteArrayOutputStream();
defaultIcon.compress(Bitmap.CompressFormat.JPEG, 100, stream);

byte[] bitmapdata = stream.toByteArray();


But how do I get a byte array from a
Drawable
?

Answer
Drawable d; // the drawable (Captain Obvious, to the rescue!!!)
Bitmap bitmap = ((BitmapDrawable)d).getBitmap();
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream);
byte[] bitmapdata = stream.toByteArray();