web-dev-qa-db-fra.com

Android convertit une chaîne encodée en base64 en vue d'image

Je veux convertir une chaîne encodée en base64 en bitmap afin que je puisse la mettre en mode d'affichage d'image, mais obtenir une erreur comme

D/skia (7490): --- decoder-> decode a renvoyé la valeur false et le bitmap a renvoyé la valeur null

Mon code est:

byte[] imageAsBytes = Base64.decode(imageData);

image.setImageBitmap(BitmapFactory.decodeByteArray(imageAsBytes, 0, imageAsBytes.length));
19
Baskar

Premièrement, vous devez vérifier que la chaîne que vous souhaitez décoder est vaild et que la valeur souhaitée est décodée. Pour ce faire, vous pouvez procéder comme ci-dessous:

filePath= Environment.getExternalStorageDirectory()
                        + "/SaudiScore/temporary_holder.jpg";
Bitmap selectedImage =  BitmapFactory.decodeFile(filePath);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
selectedImage.compress(Bitmap.CompressFormat.JPEG, 100, stream);
byte[] byteArray = stream.toByteArray();
String strBase64=Base64.encodeToString(byteArray, 0);

vous pouvez alors décoder la chaîne que vous venez d’encoder et récupérer l’image en procédant comme suit:

byte[] decodedString = Base64.decode(strBase64, Base64.DEFAULT);
Bitmap decodedByte = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length); 
image.setImageBitmap(decodedByte);
43
Husam A. Al-ahmadi
byte[] decodedString = Base64.decode(mBase64string, Base64.DEFAULT);
Bitmap decodedByte = BitmapFactory.decodeByteArray(decodedString, 0,decodedString.length);
mImageView.setImageBitmap(decodedByte);
17
Saurabh Bhandari
String base = "Base64 string values of some image";

byte[] imageAsBytes = Base64.decode(base.getBytes(), Base64.DEFAULT);

ImageView image = (ImageView) this.findViewById(R.id.imageView1);

image.setImageBitmap(BitmapFactory.decodeByteArray(imageAsBytes, 0, imageAsBytes.length));

Essayez ce code.

5
Nikhil Dinesh

Cette méthode peut aider:

private void setExistImage(ImageView imageView, String base64String){
    if (!base64String.isEmpty()) {
        byte[] bytes = Base64.decode(base64String, Base64.DEFAULT);
        imageView.setImageBitmap(BitmapFactory.decodeByteArray(bytes, 0, bytes.length));
    }
}
0
Hadi Note