Tengo una cadena Base64 que representa una imagen de BitMap.
Necesito transformar esa Cadena en una imagen de BitMap nuevamente para usarla en un ImageView en mi aplicación de Android
¿Cómo hacerlo?
Este es el código que uso 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);
String cleanImage = base64Image.replace("data:image/png;base64,", "").replace("data:image/jpeg;base64,","");
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 le envió la API es codificado en Base64 y debe decodificarse primero para convertirlo en un objeto de mapa de bits! -Eche un vistazo a su cadena codificada Base64, si comienza con
El Base64.decode no podrá decodificarlo, por lo que debe eliminarse de su cadena codificada:
Ahora el objeto pureBase64Encoded está listo para ser decodificado:
¡Ahora simplemente use la línea de abajo para convertir esto en un objeto de mapa de bits ! :
O si está utilizando la gran biblioteca Glide :
¡Esto debería hacer el trabajo! ¡Se desperdició un día en esto y llegó a esta solución!
Nota : Si todavía recibe un error de mala base64, considere otros indicadores de Base64.decode como Base64.URL_SAFE, etc.
fuente
Este es un hilo muy antiguo, pero pensé en compartir esta respuesta, ya que me llevó mucho tiempo de desarrollo administrar el
NULL
retorno deBitmapFactory.decodeByteArray()
@Anirudh.Si la
encodedImage
cadena es unaJSON
respuesta, simplemente use enBase64.URL_SAFE
lugar deBase64.DEAULT
fuente
Para verificar en línea puede usar
http://codebeautify.org/base64-to-image-converter
Puedes convertir cadenas a imágenes de esta manera
http://www.thecrazyprogrammer.com/2016/10/android-convert-image-base64-string-base64-string-image.html
fuente
He encontrado esta solución fácil.
Para convertir de mapa de bits a Base64, use este método.
Para convertir de Base64 a mapa de bits O revertir.
fuente