Как сохранить bitmap-объект в sharedpreferences в android

Я хочу сохранить объект растрового изображения в общих предпочтениях, а метод возобновления просто получить этот объект и установить его в фоновом режиме. Пожалуйста, расскажите мне, как хранить и извлекать его из общих настроек. Проблема заключается в том, что в общих предпочтениях мы можем поместить значения как String, int, bolean, long и т. Д., Но не битмао-объект. Пожалуйста, помогите мне разобраться в этой проблеме. Ниже мой код:

@Override protected void onResume() { super.onResume(); rl_changeBackground.setBackgroundDrawable(new BitmapDrawable(getResources(),HomeSafeStaticVariables.bitmap)); } } 

Вы можете добавлять только значения Boolean, Float, Int, Long, String в SharedPreference. Но одна вещь, которую вы можете сделать, это преобразовать Bitmap в Base64 String. И после извлечения его из SharedPrefrence конвертируйте его в Bitmap.

Используйте следующий метод для преобразования битмапа в массив байтов:

 ByteArrayOutputStream baos = new ByteArrayOutputStream(); bm.compress(Bitmap.CompressFormat.PNG, 100, baos); //bm is the bitmap object byte[] b = baos.toByteArray(); 

Для кодирования base64 из массива байтов используйте следующий метод

 String encoded = Base64.encodeToString(b, Base64.DEFAULT); 

И сохраните его в SharedPrefrence.

Теперь, предполагая, что ваши данные изображения находятся в кодировке String, которая должна быть передана вам в BitMap из строки Base64:

 byte[] imageAsBytes = Base64.decode(encoded.getBytes()); ImageView image = (ImageView)this.findViewById(R.id.ImageView); image.setImageBitmap(BitmapFactory.decodeByteArray(imageAsBytes, 0, imageAsBytes.length)); 

Это может вам помочь. Попробуйте, пожалуйста, дайте мне знать!

Вы можете хранить SharedPreferences в качестве base64 в SharedPreferences Но не рекомендуется хранить растровые изображения в SharedPreferences . Вы должны сохранить изображение на SD-карте и сохранить путь в SharedPreferences .

Проверьте этот вопрос

Если вы действительно хотите сохранить свое изображение в SharedPreferences, вы должны взглянуть на это решение (или подобное, которое уже существует здесь):

Как хранить и извлекать растровые изображения в sharedPreferences в Android?

Intereting Posts
DoubleTap в android Как я могу воспроизвести видео в кусках байтов? Войдите в facebook кнопку, чтобы открыть новую активность Отправлять текст в обычном приложении для Android Почему Android Studio удаляет и / или меняет ограничения layout_margin *? Как установить свойства по умолчанию в сборке AOSP? Меню Android и преобразование панели действий Android – Calling System.loadLibrary () заставляет процесс умереть «Не найдено приемлемого модуля» на эмуляторах Android, используя com.google.android.gms play-services 9.2.0 Управление несколькими асинтесами для загрузки нескольких изображений из html-кода, утечки памяти, любых идей? Проблема со временем буферизации MediaPlayer при потоковой передаче аудио Каков надлежащий способ инициировать сетевую связь на основе приема трансляции? Android studio 2.3: Не удалось инициализировать класс org.jetbrains.kotlin.android.actions.NewKotlinActivityAction Что происходит с кодом JavaScript после приложения, скомпилировано с помощью Titanium Mobile Используйте новую версию ADT