Saltar al contenido

¿Cómo convertir una cadena Base64 en una imagen de mapa de bits para mostrarla en un ImageView?

Solución:

Básicamente, puede revertir su código utilizando algunos otros métodos integrados.

byte[] decodedString = Base64.decode(encodedImage, Base64.DEFAULT);
Bitmap decodedByte = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length); 

Para cualquiera que todavía esté interesado en esta pregunta: Si: 1-decodeByteArray devuelve nulo 2-Base64.decode arroja una excepción bad-base64

Aquí está la solución: -Debe considerar que el valor que se le envía desde la API está codificado en Base64 y debe decodificarse primero para convertirlo en un objeto Bitmap. -Eche un vistazo a su cadena codificada en Base64, si comienza con

datos: imagen / jpg; base64

El código Base64 no podrá decodificarlo, por lo que debe eliminarse de su cadena codificada:

final String encodedString = "data:image/jpg;base64, ....";                        
final String pureBase64Encoded = encodedString.substring(encodedString.indexOf(",")  + 1);

Ahora el pureBase64Encoded el objeto está listo para ser decodificado:

final byte[] decodedBytes = Base64.decode(pureBase64Encoded, Base64.DEFAULT);

Ahora simplemente use la línea de abajo para convertir esto en un Mapa de bits ¡Objeto! :

Mapa de bits decodedBitmap = BitmapFactory.decodeByteArray (decodedBytes, 0, decodedBytes.length);

O si estás usando la gran biblioteca Planeo:

Glide.with(CaptchaFragment.this).load(decodedBytes).crossFade().fitCenter().into(mCatpchaImageView);

¡Esto debería hacer el trabajo! ¡Perdió un día en esto y llegó a esta solución!

Nota: Si aún recibe el error bad-base64, considere otros indicadores de Base64.decode como Base64.URL_SAFE, etc.

Este es un hilo muy antiguo, pero pensé en compartir esta respuesta, ya que me tomó mucho tiempo de desarrollo administrarlo. NULL retorno de BitmapFactory.decodeByteArray() como se ha enfrentado @Anirudh.

Si el encodedImage la cuerda es una JSON respuesta, simplemente usa Base64.URL_SAFE en lugar de Base64.DEAULT

byte[] decodedString = Base64.decode(encodedImage, Base64.URL_SAFE);
Bitmap decodedByte = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length);
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *