163 votes

Bitmap Android en chaîne Base64

Comment convertir un grand Bitmap (photo prise avec l'appareil photo du téléphone) en une chaîne Base64 ?

357voto

jeet Points 14950

utilisez la méthode suivante pour convertir le bitmap en tableau d'octets :

 ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();  
bitmap.compress(Bitmap.CompressFormat.PNG, 100, byteArrayOutputStream);
byte[] byteArray = byteArrayOutputStream .toByteArray();

pour coder en base64 à partir d'un tableau d'octets, utilisez la méthode suivante

 String encoded = Base64.encodeToString(byteArray, Base64.DEFAULT);

36voto

Vasilii Suricov Points 341

J'ai une solution rapide. Créez simplement un fichier ImageUtil.java

 import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.util.Base64;
import java.io.ByteArrayOutputStream;

public class ImageUtil
{
    public static Bitmap convert(String base64Str) throws IllegalArgumentException
    {
        byte[] decodedBytes = Base64.decode(
            base64Str.substring(base64Str.indexOf(",")  + 1),
            Base64.DEFAULT
        );

        return BitmapFactory.decodeByteArray(decodedBytes, 0, decodedBytes.length);
    }

    public static String convert(Bitmap bitmap)
    {
        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
        bitmap.compress(Bitmap.CompressFormat.PNG, 100, outputStream);

        return Base64.encodeToString(outputStream.toByteArray(), Base64.DEFAULT);
    }

}

Usage:

 Bitmap bitmap = ImageUtil.convert(base64String);

ou alors

 String base64String = ImageUtil.convert(bitmap);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X