154 votes

Comment puis-je convertir une image en une chaîne de caractères Base64 ?

Quel est le code pour transformer une image (maximum de 200 Ko) en une chaîne de caractères Base64 ?

J'ai besoin de savoir comment le faire avec Android, car je dois ajouter la fonctionnalité de téléchargement d'images vers un serveur distant dans mon application principale, en les plaçant dans une ligne de la base de données, sous forme de chaîne.

Je cherche dans Google et dans Stack Overflow, mais je n'ai pas trouvé d'exemples faciles que je puisse me permettre et j'ai aussi trouvé quelques exemples, mais ils ne parlent pas de transformer en String. Alors j'ai besoin de transformer en une chaîne pour télécharger par JSON à mon serveur distant.

0voto

fdhchc Points 1
byte[] decodedString = Base64.decode(result.getBytes(), Base64.DEFAULT);

0voto

vivek Points 208

Vous trouverez ci-dessous le pseudo-code qui peut vous aider :

public  String getBase64FromFile(String path)
{
    Bitmap bmp = null;
    ByteArrayOutputStream baos = null;
    byte[] baat = null;
    String encodeString = null;
    try
    {
        bmp = BitmapFactory.decodeFile(path);
        baos = new ByteArrayOutputStream();
        bmp.compress(Bitmap.CompressFormat.JPEG, 100, baos);
        baat = baos.toByteArray();
        encodeString = Base64.encodeToString(baat, Base64.DEFAULT);
    }
    catch (Exception e)
    {
        e.printStackTrace();
    }

   return encodeString;
}

0voto

Asif Ali Points 7

Voici le code pour l'encodage et le décodage des images.

Dans un fichier XML

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="yyuyuyuuyuyuyu"
    android:id="@+id/tv5"
/>

Dans un fichier Java :

TextView textView5;
Bitmap bitmap;

textView5 = (TextView) findViewById(R.id.tv5);

bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.logo);

new AsyncTask<Void, Void, String>() {
    @Override
    protected String doInBackground(Void... voids) {
        ByteArrayOutputStream stream = new ByteArrayOutputStream();
        bitmap.compress(Bitmap.CompressFormat.JPEG, 70, stream);
        byte[] byteFormat = stream.toByteArray();

        // Get the Base64 string
        String imgString = Base64.encodeToString(byteFormat, Base64.NO_WRAP);

        return imgString;
    }

    @Override
    protected void onPostExecute(String s) {
       textView5.setText(s);
    }
}.execute();

0voto

Izzamed Points 81

Je crée une fonction statique. C'est plus efficace je pense.

public static String file2Base64(String filePath) {
        FileInputStream fis = null;
        String base64String = "";
        ByteArrayOutputStream bos = new ByteArrayOutputStream();
        try {
            fis = new FileInputStream(filePath);
            byte[] buffer = new byte[1024 * 100];
            int count = 0;
            while ((count = fis.read(buffer)) != -1) {
                bos.write(buffer, 0, count);
            }
            fis.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        base64String = Base64.encodeToString(bos.toByteArray(), Base64.DEFAULT);
        return base64String;

    }

Simple et plus facile !

-1voto

PJ2104 Points 134

Utilisez ce code :

byte[] decodedString = Base64.decode(Base64String.getBytes(), Base64.DEFAULT);

Bitmap decodedByte = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length);

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