2016-02-19 49 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