我将String位图上传为“用户个人资料图片”。使用php上传到服务器都很好,从服务器下载也是如此。问题是,当我在查看位图字符串时,我看到小箭头,我不知道为什么会发生这种情况。
我发送的字符串位图(后编码):1
和我正在接收的字符串位图(预先解码):[2]我把它交给了以下内容,因为我是新来的,他们不要让我超过1个链接
我想也许我没有处理好从PHP读取字符串。如果需要,我可以将代码粘贴到我做的地方。
感谢帮助人员!
[编辑]
从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();
一旦我用逗号分隔线:(即时接收smth,如“name”:“john”,“age”=“5”,...,“bitstringImag”=“/ 9j / 4AA ..”)
我得到了Bitmap String值:
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 :(得分:0)
我实现了一种类似的方法,使用服务器端的bin2hex功能从Android上的PHP服务器接收图像。我们来看看代码:
获取JSON的十六进制字符串后,我们将其转换为ByteArray:
/**
* Converts a hexadecimal string to byte array.
*
* @param s String to convert.
* @return The result of conversion.
*/
public static byte[] hexStringToByteArray(String s) {
int len = s.length();
byte[] data = new byte[len / 2];
for (int i = 0; i < len; i += 2) {
data[i / 2] = (byte) ((Character.digit(s.charAt(i), 16) << 4)
+ Character.digit(s.charAt(i+1), 16));
}
return data;
}
然后从ByteArray创建一个新的Bitmap:
/**
* Decode an immutable bitmap from the specified byte array.
*
* @param data byte array of compressed image data
* @param offset offset into imageData for where the decoder should begin parsing.
* @param length the number of bytes, beginning at offset, to parse
* @return The decoded bitmap, or null if the image could not be decoded.
*/
BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length);
结果可以使用imageView.setImageBitmap(Bitmap)
方法将Bitmap加载到ImageView中。