Drawable to byte[]
у меня есть изображение из интернета в ImageView. Он очень маленький (фавикон), и я хотел бы сохранить его в своей базе данных SQLite.
Я могу получить Drawable С mImageView.getDrawable() но тогда я не знаю, что делать дальше. Я не совсем понимаю Drawable класс В Android.
Я знаю, что могу получить массив байтов из Bitmap как:
Bitmap defaultIcon = BitmapFactory.decodeStream(in);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
defaultIcon.compress(Bitmap.CompressFormat.JPEG, 100, stream);
byte[] bitmapdata = stream.toByteArray();
но как я могу получить массив байт из Drawable?
5 ответов:
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();
спасибо всем, и это решило мою проблему.
Resources res = getResources(); Drawable drawable = res.getDrawable(R.drawable.my_pic); Bitmap bitmap = ((BitmapDrawable)drawable).getBitmap(); ByteArrayOutputStream stream = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream); byte[] bitMapData = stream.toByteArray();
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.tester); ByteArrayOutputStream stream = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream); byte[] bitMapData = stream.toByteArray();
Если Drawable-это BitmapDrawable, вы можете попробовать это.
long getSizeInBytes(Drawable drawable) { if (drawable == null) return 0; Bitmap bitmap = ((BitmapDrawable) drawable).getBitmap(); return bitmap.getRowBytes() * bitmap.getHeight(); }точечный рисунок.getRowBytes () возвращает количество байтов между строками в пикселях растрового изображения.
Подробнее см. Этот проект:класса lazylist
File myFile = new File(selectedImagePath); byte [] mybytearray = new byte [filelenghth]; BufferedInputStream bis1 = new BufferedInputStream(new FileInputStream(myFile)); bis1.read(mybytearray,0,mybytearray.length);теперь изображение хранится в bytearray..
Comments