Как преобразовать строку Base64 в образ BitMap, чтобы показать его в ImageView?

У меня есть строка Base64, представляющая образ BitMap.

Мне нужно снова преобразовать эту строку в образ BitMap, чтобы использовать ее в ImageView в моем приложении для Android

Как это сделать?

Это код, который я использую для преобразования изображения в base64 String:

//proceso de transformar la imagen BitMap en un String: //android:src="c:\logo.png" Resources r = this.getResources(); Bitmap bm = BitmapFactory.decodeResource(r, R.drawable.logo); ByteArrayOutputStream baos = new ByteArrayOutputStream(); bm.compress(Bitmap.CompressFormat.PNG, 100, baos); //bm is the bitmap object byte[] b = baos.toByteArray(); //String encodedImage = Base64.encode(b, Base64.DEFAULT); encodedImage = Base64.encodeBytes(b); 

Вы можете просто восстановить код, используя другие встроенные методы.

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

Тем, кто все еще интересуется этим вопросом: If: 1-decodeByteArray возвращает null 2-Base64.decode throws bad-base64 Exception

Вот решение: -Вы должны учитывать, что значение, отправленное вам из API, является Base64 Encoded и должно быть сначала декодировано, чтобы передать его в объект Bitmap! -Посмотрите на свою строковую кодировку Base64, если она начинается с

данные: изображения / JPG; base64

Base64.decode не сможет декодировать его, поэтому его нужно удалить из кодированной строки String:

 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 ! :

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 и т. Д.

Это очень старый поток, но он решил поделиться этим ответом, поскольку мне потребовалось много времени на разработку для управления возвратом NULL BitmapFactory.decodeByteArray() с которым столкнулся @Anirudh.

Если строка encodedImage является ответом JSON , просто используйте Base64.URL_SAFE вместо Base64.DEAULT

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

Чтобы проверить онлайн, вы можете использовать

http://codebeautify.org/base64-to-image-converter

Вы можете преобразовать строку в изображение таким образом

 import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Base64; import android.widget.ImageView; import java.io.ByteArrayOutputStream; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ImageView image =(ImageView)findViewById(R.id.image); //encode image to base64 string ByteArrayOutputStream baos = new ByteArrayOutputStream(); Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.logo); bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos); byte[] imageBytes = baos.toByteArray(); String imageString = Base64.encodeToString(imageBytes, Base64.DEFAULT); //decode base64 string to image imageBytes = Base64.decode(imageString, Base64.DEFAULT); Bitmap decodedImage = BitmapFactory.decodeByteArray(imageBytes, 0, imageBytes.length); image.setImageBitmap(decodedImage); } } 

http://www.thecrazyprogrammer.com/2016/10/android-convert-image-base64-string-base64-string-image.html