我使用Base64.encodeToString
对图像进行编码,将其(以及其他数据)添加到JSON正文并将其发送到Web服务进行存储。
我的编码方法如下:
private static String encodeToBase64(Bitmap image) {
Bitmap immagex = image;
ByteArrayOutputStream baos = new ByteArrayOutputStream();
immagex.compress(Bitmap.CompressFormat.JPEG, 100, baos);
byte[] bytes = baos.toByteArray();
String imageEncoded = Base64.encodeToString(bytes, Base64.DEFAULT);
return imageEncoded;
}
然后,我只需在.add("encoded_image", encodeToBase64(bitImage));
上致电JSONObject
,然后通过我的网络服务类发送。
但是,当我在另一侧获得图像时,它已损坏。 PHP函数base64_decode
执行并且似乎提供了一个图像,但是当我将该图像写入临时文件时,我无法打开它。它说图像已损坏。我不确定从哪里开始寻找。
我看过其他主题,但他们的解决方案似乎没有用。
帮助表示赞赏。感谢。
答案 0 :(得分:2)
我不认为DEFAULT
选项与您的PHP版本混合得很好。
PHP上的某些版本似乎存在一个错误,如果输入格式不正确,会导致base64_decode
错误。
尝试添加NO_WRAP
选项,以确保生成的输出中没有空格/ likebreak字符。
如果这没有帮助,请查看base64_decode
功能的manual页面,了解如何使其正常工作。
如果你分析你在android中发送的内容并在php中接收,也就是说,记录一些调试输出或使用断点进行检查,看看是否有任何问题,这也可能有所帮助。