Cómo almacenar objeto de mapa de bits en sharedferencias en android
Quiero almacenar el objeto de mapa de bits en las preferencias compartidas y en el método de reanudar acaba de recuperar ese objeto y establecerlo en el fondo.Por favor, díganme cómo almacenar y recuperar el formulario de preferencias compartidas.El problema es que en las preferencias compartidas podemos poner los valores como String, int, bolean, etc largo, pero no el objeto bitmao.Por favor, ayúdame a solucionar este problema.Below es mi código:
@Override protected void onResume() { super.onResume(); rl_changeBackground.setBackgroundDrawable(new BitmapDrawable(getResources(),HomeSafeStaticVariables.bitmap)); } }
- BitmapFactory.Options da 0 ancho y altura
- Java.lang.OutOfMemoryError al intentar cargar un mapa de bits en imageView
- Canvas.drawBitmap () tarda más tiempo en dibujar el mapa de bits por primera vez mientras que el mosaico del mapa de bits
- Mensaje de Android "No se puede generar textura de mapa de bits"
- ¿Qué hay de malo en este método de cálculo inSampleSize para Bitmaps? Sin memoria
- Cómo cambiar el tamaño de la imagen en Android?
- Problema de conversión de URI a Bitmap (2014):
- ¿Cómo configurar la imagen de una imagen de una cadena?
- Android: ¿Diferencia entre canvas.drawBitmap y BitmapDrawable.draw?
- ¿Por qué setImageBitmap no tiene efecto en ImageButton personalizado?
- Cómo cambiar el tamaño de un mapa de bits en Android?
- Android - cómo cargar mapa de bits de res sin cambiar el tamaño?
- Cargar correctamente datos de mapa de bits de 24 bits en un objeto Bitmap de 32 bits
Puede agregar sólo Boolean, Float, Int, Long, String valores en SharedPreference. Pero una cosa que puedes hacer es convertir Bitmap a Base64 String. Y después de recuperarlo de SharedPrefrence, lo convierten en Bitmap.
Utilice el siguiente método para convertir el mapa de bits en matriz de bytes:
ByteArrayOutputStream baos = new ByteArrayOutputStream(); bm.compress(Bitmap.CompressFormat.PNG, 100, baos); //bm is the bitmap object byte[] b = baos.toByteArray();
Codificar base64 de matriz de bytes utilizar el siguiente método
String encoded = Base64.encodeToString(b, Base64.DEFAULT);
Y guárdelo en SharedPrefrence.
Ahora suponiendo que sus datos de imagen están en una cadena llamada codificada, lo siguiente debería darle BitMap de la cadena Base64:
byte[] imageAsBytes = Base64.decode(encoded.getBytes()); ImageView image = (ImageView)this.findViewById(R.id.ImageView); image.setImageBitmap(BitmapFactory.decodeByteArray(imageAsBytes, 0, imageAsBytes.length));
Esto puede ayudarle. ¡Intenta y por favor déjame saber!
Puede almacenar Bitmap como cadena base64 en SharedPreferences
Pero no es una buena práctica almacenar imágenes de mapa de bits en SharedPreferences
. Debe almacenar la imagen en la tarjeta SD y guardar la ruta en SharedPreferences
.
Compruebe esta pregunta
Si realmente desea almacenar su imagen en SharedPreferences debe echar un vistazo a esta solución (o similar que ya existe aquí):
Cómo almacenar y recuperar el mapa de bits en sharedPreferences en Android?
- Android: evita que la pantalla se apague
- File.mkdir () y mkdirs () están creando un archivo en lugar de un directorio