2012-11-26 16 views
28

Nella mia applicazione voglio inviare l'immagine bitmap al server sotto forma di stringa, voglio sapere quanti modi sono disponibili per convertire una bitmap in stringa. ora sto usando il formato Base64 per la codifica e la decodifica, ci vuole un po 'di memoria in più. c'è qualche altra possibilità di fare la stessa cosa in modi diversi che richiede meno ipotesi di memoria. Ora sto usando questo codice.Quanti modi per convertire bitmap in stringa e viceversa?

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

risposta

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

Ecco la procedura inversa per la conversione di stringhe in bitmap, ma stringa deve la codifica 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; 
    } 
} 
+0

già sto usando il formato base64, sto cercando uno diverso. –

+0

Qual è la differenza tra il mio codice e il tuo codice, sto cercando diversi modi per convertire oltre che usare BAse64. –

+0

StringToBitMap viene fornito come null. Aiutami per favore. –

2

è possibile utilizzare byteArray per inviare immagini o altri dati. non c'è bisogno di codifica e decodifica. e si deve utilizzare il corpo multipart per inviare i dati al server ..

+0

Sarebbe davvero apprezzabile e utile se tu potessi condividere con la tua risposta come fare il caricamento dell'immagine con corpo multipart? (potrebbe essere con blocchi di codice Android e server) – dev1234

3

Sì, è possibile farlo implenment questo codice:

stringa da 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 a 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; 
} 
Problemi correlati