Cómo convertir una cadena Base64 en una imagen de BitMap para mostrarlo en un ImageView?

Tengo una cadena de Base64 que representa una imagen de BitMap.

Necesito transformar esa cadena en una imagen de BitMap otra vez para utilizarla en un ImageView en mi aplicación de Android

¿Cómo hacerlo?

Este es el código que utilizo para transformar la imagen en la cadena base64:

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

4 Solutions collect form web for “Cómo convertir una cadena Base64 en una imagen de BitMap para mostrarlo en un ImageView?”

Usted puede básicamente revertir su código usando algún otro construido en los métodos.

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

Para cualquiera que esté interesado todavía en esta pregunta: Si: 1-decodeByteArray devuelve null 2-Base64.decode lanza bad-base64 Excepción

Aquí está la solución: -Usted debe considerar el valor enviado a usted desde la API es Base64 codificado y debe ser decodificado primero para enviarlo a un objeto de mapa de bits. -Haga un vistazo a su cadena codificada en Base64, si comienza con

Datos: image / jpg; base64

El código base64.decode no será capaz de decodificarlo, por lo que tiene que ser eliminado de su cadena codificada:

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

Ahora el objeto pureBase64Encoded está listo para ser descodificado:

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

Ahora simplemente usa la línea de abajo para convertirlo en un objeto de mapa de bits . :

Bitmap decodedBitmap = BitmapFactory.decodeByteArray (decodificadoBytes, 0, decodedBytes.length);

O si está utilizando la gran biblioteca Glide :

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

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

Nota : Si sigue recibiendo error de base64 incorrecto, considere otros indicadores de Base64.decode como Base64.URL_SAFE y así sucesivamente

Este es un hilo muy antiguo, pero pensé compartir esta respuesta, ya que tomó mucho tiempo de desarrollo para gestionar la devolución NULL de BitmapFactory.decodeByteArray() como @Anirudh se ha enfrentado.

Si la cadena encodedImage es una respuesta JSON , simplemente use Base64.URL_SAFE lugar de Base64.DEAULT

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

Para comprobar en línea puede utilizar

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

Usted puede convertir la cadena a la imagen de esta manera

 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

  • cómo enviar la imagen de una actividad a otra?
  • Anclaje de ImageView a Collapsing Toolbar
  • OutOfMemoryError: Usando una imagen que es 1080 * 1920 haga la página de bienvenida
  • Cómo dar forma hexagonal a ImageView
  • Tratando de obtener el tamaño de visualización de una imagen en un ImageView
  • Vista de texto de Android sobre imagen con fondo transparente
  • Gire ImageView en Android en un punto fijo con RotateAnimation
  • Diapositiva de Android para responder como animación de ImageView
  • App: srcCompat - Vector drawable se muestra en la vista previa del diseño, pero no se muestra en la aplicación
  • Máscara ImageView con fondo de esquina redonda
  • ¿Cómo evitar la vista superpuesta en el diseño relativo en android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.