2016-02-19 55 views
0

我將一個String位圖上傳爲「用戶配置文件圖像」。使用php上傳到服務器都很好,也可以從服務器上下載。問題是當我在查找位圖字符串時,我發現兩個位圖之間的差別很小,我可以解碼我下載的那個。 IDK,如果我以正確的方式管理字符串。從php接收位圖字符串

字符串位圖我要送:1

字符串位圖我收到(PIC在評論,我不能把這裏超過1個鏈接)[2]

代碼從接收我的字符串PHP:

StringBuilder sb = new StringBuilder(); 
    reader = new BufferedReader(new InputStreamReader(con.getInputStream())); 
    String line; 
    while ((line = reader.readLine()) != null) { 
     sb.append(line + ""); 
    } 
     line = sb.toString(); 
String[] kvPairs = line.split(","); 

一旦予由逗號分割線:(IM接收不服如 「名稱」: 「約翰」, 「年齡」= 「5」,..., 「bitstringImag」=「/ 9j中/ 4AA ..「)

Im g ETTING位圖字符串值:

String[] bitmstrIn = kvPairs[5].split(":"); //separating the key from the value 
      String[] bitmstrIn2 = bitmstrIn[1].split("\\}"); //erasing last key in the String 
      String bitStr = bitmstrIn2[0].replaceAll("\"", ""); //removing the added (i dont know why) backslash. 
      String biStrFin = bitStr.replaceAll("\\\\","");//removing the added (i dont know why) backslash. 

,結果在bitStrFin是一個我粘貼到評論。

如果你知道任何更好的方法來做到這一點,請告訴我,我一直在爲此奮鬥很長一段時間! 感謝您的幫助球員

+0

[2]:i.stack.imgur.com/tf81o.png –

回答

0

使用Base64字符串。 Link

在我的情況下,它是最好的解決方案,並且運作良好。我通過php轉換圖像並將其顯示在我們的應用程序中。

的Java:解碼

public static Bitmap getBitmapByString(String encodedString){ 
    byte[] imageBytes = Base64.decode(encodedString, Base64.NO_WRAP); 
    return BitmapFactory.decodeByteArray(imageBytes, 0, imageBytes.length); 
} 

的Java:編碼

public static String getStringByBitmap(Bitmap bitmap){ 
    ByteArrayOutputStream outputStream = new ByteArrayOutputStream(bitmap.getByteCount()); 
    bitmap.compress(Bitmap.CompressFormat.JPEG, 100, outputStream); 
    byte[] imageBytes = outputStream.toByteArray(); 
    try { 
     outputStream.close(); 
    } catch(IOException e) { 
     e.printStackTrace(); 
    } 
    return Base64.encodeToString(imageBytes, Base64.NO_WRAP); 
} 

PHP:

$base64 = base64_encode($imagedata); 
$imagedata = base64_decode($base64); 

對不起,我回答得很晚。 這就是我的項目中的Java函數和我用來創建測試數據的PHP函數。

+0

問題是我沒有收到我發送的信息。 ** Base64的字符串我送:** /9J/4AAQSkZJRgABAQAAAQABAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBA ** Base64的字符串我收到:** 「圖像」:「\/9J \/4AAQSkZJRgABAQAAAQABAAD \/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB \ n ... 你知道什麼可能是錯的嗎? –

+0

@ÁlvaroKoke編輯我的帖子:)希望它有幫助 – Manu