Comment faire pour convertir un fichier crypté en Base64 chaîne de caractères en une image Bitmap image pour l'afficher dans une ImageView?
J'ai un Base64 Chaîne de caractères qui représente une image BitMap.
J'ai besoin de transformer cette Chaîne en une image BitMap à nouveau pour l'utiliser sur une ImageView dans mon application Android
Comment faire?
C'est le code que j'utilise pour transformer l'image en base64 Chaîne:
//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);
Vous devez vous connecter pour publier un commentaire.
Vous pouvez juste fondamentalement changer votre code à l'aide de quelques autres méthodes intégrées.
String cleanImage = base64Image.replace("data:image/png;base64,", "").replace("data:image/jpeg;base64,","");
À toute personne qui est encore intéressé à cette question:
Si:
1-decodeByteArray retourne null
2-en Base64.décoder jette bad-base64 Exception
Voici la solution:
-Vous devriez considérer la valeur envoyée à partir de l'API est Encodé en Base64 et doit être décodé en premier afin de le convertir en un objet Bitmap!
-Jetez un oeil à votre Chaîne encodée en Base64, Si elle commence avec
Le Base64.décoder de ne pas être en mesure de décoder, de Sorte qu'il doit être supprimé de votre Chaîne codée:
Maintenant la pureBase64Encoded objet est prêt à être décodé:
À présent tout simplement utiliser la ligne ci-dessous pour en faire un Bitmap Objet! :
Ou si vous êtes à l'aide de la grande bibliothèque Glide:
Ceci devrait faire la job!!! Il a gaspillé un jour sur ce, et en arrive à cette solution!
Note:
Si vous êtes encore en train de mauvaise base64 erreur de considérer d'autres Base64.décoder des drapeaux comme Base64.URL_SAFE et ainsi de suite
C'est un très vieux thread mais la pensée de partager cette réponse qu'il a pris beaucoup de mon temps de développement pour gérer
NULL
retour deBitmapFactory.decodeByteArray()
comme @Anirudh a dû faire face.Si le
encodedImage
chaîne est unJSON
réponse, il suffit d'utiliserBase64.URL_SAFE
au lieu deBase64.DEAULT
Pour vérifier en ligne, vous pouvez utiliser
http://codebeautify.org/base64-to-image-converter
Vous pouvez convertir une chaîne de caractères à l'image de cette façon
http://www.thecrazyprogrammer.com/2016/10/android-convert-image-base64-string-base64-string-image.html