Всем, кто все еще интересуется этим вопросом:
Если:
1-decodeByteArray возвращает ноль
2-Base64.decode создает исключение bad-base64
Вот решение:
-Вы должны учитывать, что значение, отправленное вам из API, является Base64 Encoded и должно быть сначала декодировано, чтобы привести его к объекту Bitmap!
-Посмотрите на строку в кодировке Base64, если она начинается с
данные: изображение / JPG; base64
Base64.decode не сможет его декодировать, поэтому его нужно удалить из вашей закодированной строки:
final String encodedString = "data:image/jpg;base64, ....";
final String pureBase64Encoded = encodedString.substring(encodedString.indexOf(",") + 1);
Теперь объект pureBase64Encoded готов к декодированию:
final byte[] decodedBytes = Base64.decode(pureBase64Encoded, Base64.DEFAULT);
Теперь просто используйте строку ниже, чтобы превратить это в Растровое изображение Объект! :
Bitmap decodedBitmap = BitmapFactory.decodeByteArray (decodedBytes, 0,
decodedBytes.length);
Или, если вы используете большую библиотеку Glide :
Glide.with(CaptchaFragment.this).load(decodedBytes).crossFade().fitCenter().into(mCatpchaImageView);
Это должно сделать работу! На это он потратил один день и пришел к этому решению!
Примечание :
Если вы по-прежнему получаете ошибку bad-base64, рассмотрите другие флаги Base64.decode, такие как Base64.URL_SAFE и т. Д.