web-dev-qa-db-fra.com

Combien de façons de convertir un bitmap en chaîne et vice-versa?

Dans mon application, je veux envoyer une image bitmap au serveur sous forme de chaîne, je veux savoir combien de façons sont disponibles pour convertir un bitmap en chaîne. maintenant j'utilise le format Base64 pour l'encodage et le décodage, cela prend un peu plus de mémoire. existe-t-il d'autres possibilités de faire la même chose de différentes manières, ce qui nécessite moins de mémoire. J'utilise maintenant ce code.

Resources r = ShowFullImage.this.getResources();
Bitmap bm = BitmapFactory.decodeResource(r, R.drawable.col);
ByteArrayOutputStream baos = new ByteArrayOutputStream();  
bm.compress(Bitmap.CompressFormat.PNG, 100, baos); //bm is the bitmap object   
byte[] b = baos.toByteArray();

String encodedImage = Base64.encodeToString(b, Base64.DEFAULT);
33
public String BitMapToString(Bitmap bitmap){
     ByteArrayOutputStream baos=new  ByteArrayOutputStream();
     bitmap.compress(Bitmap.CompressFormat.PNG,100, baos);
     byte [] b=baos.toByteArray();
     String temp=Base64.encodeToString(b, Base64.DEFAULT);
     return temp;
}

Voici la procédure inverse pour convertir une chaîne en bitmap, mais la chaîne devrait coder en Base64

/**
 * @param encodedString
 * @return bitmap (from given string)
 */
public Bitmap StringToBitMap(String encodedString){
   try {
      byte [] encodeByte=Base64.decode(encodedString,Base64.DEFAULT);
      Bitmap bitmap=BitmapFactory.decodeByteArray(encodeByte, 0, encodeByte.length);
      return bitmap;
   } catch(Exception e) {
      e.getMessage();
      return null;
   }
}
72
sachin10

Oui, vous pouvez le faire par implémentation de ce code:

Chaîne en bitmap:

 public Bitmap StringToBitMap(String encodedString) {
    try {
        byte[] encodeByte = Base64.decode(encodedString, Base64.DEFAULT);
        Bitmap bitmap = BitmapFactory.decodeByteArray(encodeByte, 0,
                encodeByte.length);
        return bitmap;
    } catch (Exception e) {
        e.getMessage();
        return null;
    }
}

Bitmap en chaîne:

public String BitMapToString(Bitmap bitmap) {
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    bitmap.compress(Bitmap.CompressFormat.PNG, 100, baos);
    byte[] b = baos.toByteArray();
    String temp = Base64.encodeToString(b, Base64.DEFAULT);
    return temp;
}
4
Mitul Goti

vous pouvez utiliser byteArray pour envoyer des images ou d'autres données. il n'y a pas besoin d'encodage et de décodage. et vous devez utiliser un corps en plusieurs parties pour envoyer des données au serveur ..

2
Sanket Kachhela