2012-11-26 29 views
28

In meiner Anwendung möchte ich Bitmap-Bild an den Server in Form von Zeichenfolge senden, ich möchte wissen, wie viele Möglichkeiten verfügbar sind, um eine Bitmap in Zeichenfolge zu konvertieren. Jetzt benutze ich das Base64-Format zum Verschlüsseln und Dekodieren, es braucht etwas mehr Speicher. Gibt es noch andere Möglichkeiten, dasselbe auf verschiedene Arten zu tun, was weniger Speicherverbrauch erfordert. Jetzt verwende ich diesen Code.Wie viele Möglichkeiten, Bitmap in String und umgekehrt umzuwandeln?

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); 

Antwort

61
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; 
} 

Hier ist der umgekehrte Vorgang ist Zeichenfolge für die Umwandlung aber Zeichenfolge in Bitmap sollte Base64-Codierung

/** 
* @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; 
    } 
} 
+0

bin ich bereits mit base64 format, ich suche nach anderen. –

+0

Was ist der Unterschied zwischen meinem Code und Ihrem Code, ich bin auf der Suche nach anderen Möglichkeiten zur Konvertierung als mit BAse64. –

+0

StringToBitMap kommt als null. Hilf mir bitte. –

2

können Sie byteArray verwenden, um Bilder oder andere Daten zu senden. Es gibt keine Codierung und Decodierung erforderlich. und Sie haben mehrteiliger Körper verwenden, um Daten an den Server zu senden ..

+0

Es wäre wirklich spürbar und nützlich sein, wenn Sie mit Ihrer Antwort teilen können, wie das Hochladen von Bildern mit mehrteiliger Körpern zu tun? (möglicherweise mit android und server code blöcke) – dev1234

3

Ja, Sie können es tun, indem implenment diesen Code:

String 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 S Tring:

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; 
}