发送base64编码的图像会导致图像损坏

时间:2013-04-18 19:53:07

标签: android json base64

我使用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执行并且似乎提供了一个图像,但是当我将该图像写入临时文件时,我无法打开它。它说图像已损坏。我不确定从哪里开始寻找。

我看过其他主题,但他们的解决方案似乎没有用。

帮助表示赞赏。感谢。

1 个答案:

答案 0 :(得分:2)

我不认为DEFAULT选项与您的PHP版本混合得很好。 PHP上的某些版本似乎存在一个错误,如果输入格式不正确,会导致base64_decode错误。

尝试添加NO_WRAP选项,以确保生成的输出中没有空格/ likebreak字符。

如果这没有帮助,请查看base64_decode功能的manual页面,了解如何使其正常工作。

如果你分析你在android中发送的内容并在php中接收,也就是说,记录一些调试输出或使用断点进行检查,看看是否有任何问题,这也可能有所帮助。