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