Intereting Posts
Как скрыть клавиатуру на клавише ввода Получение координат кликов в Android ListView OnItemClickListener Стили и темы для значений, значений-v11 и значений-v14 папок Как перемещаться с экрана на другой экран Что такое Uri для Wearable.DataApi.getDataItem () после использования PutDataMapRequest? Как получить GoogleApiClient в Xamarin? Медиа-проигрыватель, вызываемый в состоянии 0, ошибка (-38,0) InflateException: двоичная строка XML-файла # 22: ошибка раздувания класса <unknown> Как я могу стилизовать SearchView при использовании панели инструментов в качестве панели действий? Как начать уведомление по пользовательской дате и времени? Настройте Gson для использования нескольких форматов даты Когда нужно вызвать response.body (). Close () Как отключить панель состояния / панель уведомлений на андроиде программно? ViewPager внутри Fragment теряет свое содержание, когда фрагмент переименован Google Map Android Api V2 не работает

Допустимый байт

У меня есть изображение из Интернета в 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 ?

Solutions Collecting From Web of "Допустимый байт"

 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(); } 

Bitmap.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 ..