imagen decodificar compress android base64 imageview

decodificar - imageview to base64 android



¿Cómo convertir una cadena Base64 en una imagen BitMap para mostrarla en un ImageView? (4)

Este es un hilo muy antiguo, pero pensé en compartir esta respuesta, ya que me llevó mucho tiempo de desarrollo administrar el retorno 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);

Tengo una Cadena Base64 que representa una imagen de mapa de bits.

Necesito transformar ese String en una imagen de BitMap nuevamente para usarlo 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);


Para cualquiera que esté interesado en esta pregunta: If: 1-decodeByteArray devuelve nulo 2-Base64.decode arroja bad-base64 Exception

Aquí está la solución: -Deberías considerar que el valor enviado desde la API está codificado en Base64 y debe decodificarse primero para convertirlo en un objeto de mapa de bits. - Eche un vistazo a su cadena codificada en Base64, si comienza con

datos: image / jpg; base64

El Código Base64 no podrá decodificarlo, por lo que debe 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 decodificarse:

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

Ahora simplemente use la línea de abajo para convertir esto en un Objeto Bitmap ! :

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

O si estás usando la gran biblioteca Glide :

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

¡Esto debería hacer el trabajo! ¡Se desperdició un día en esto y se acercó a esta solución!

Nota : Si aún obtiene el error bad-base64 considere otros indicadores de Base64.decode como Base64.URL_SAFE, etc.


Para verificar en línea puede usar

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

Puede convertir cadena a 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


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