2014-10-08 39 views
1

我試圖將位圖轉換爲可包含在我的多部分HTTP請求中的字符串,我必須手動構建請求正文,並且我的問題是當我將位圖轉換爲字節數組,然後從字節數組轉換爲字符串,我似乎失去了文件結構的完整性。如何將位圖轉換爲字符串而不損壞文件結構?Android - 將位圖轉換爲包含在多部分請求中的字符串

Bitmap imageBitmap = BitmapFactory.decodeFile(data.getData()); 
ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
imageBitmap.compress(Bitmap.CompressFormat.PNG, 100, baos); 
String s = new String(baos.toByteArray()); 
+0

'我似乎失去文件結構的完整性。一份文件?你在談論一個位圖。特別是當你使用分段上傳時,不要base64編碼。按原樣發送文件。 – greenapps 2014-10-08 17:12:51

+0

在我的情況下,這是一個位圖,但我認爲上傳文件或位圖應該是相同的。 得到任何示例如何發送該文件是? – ProfessorT 2014-10-08 17:21:18

+0

'data.getData()'。那是什麼?一個文件名? – greenapps 2014-10-08 17:22:09

回答

0

可以位圖轉換爲字符串的Base64 嘗試......

public String convertBitmapToString(final Bitmap pBitmap){ 
    final ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); 
    pBitmap.compress(Bitmap.CompressFormat.PNG, 100, byteArrayOutputStream); 
    final byte [] bytes = byteArrayOutputStream.toByteArray(); 
    final String string = Base64.encodeToString(bytes, Base64.DEFAULT); 
    return string; 
} 

或者,如果你不能使用的base64,試試這個

try { 
    String s = new String(baos.toByteArray(), "UTF-8"); 
} catch (UnsupportedEncodingException e) { 
    e.printStackTrace(); 
} 
+0

問題是,Web服務期待輸入爲字節結構,我試過base64,服務沒有解碼它。 我無法控制服務,所以我必須解決這個問題。 – ProfessorT 2014-10-08 12:18:48

相關問題