2

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

我查看了其他线程,但他们的解决方案似乎不起作用。

帮助表示赞赏。谢谢。

4

1 回答 1

2

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

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

如果这没有帮助,请查看该功能的手册base64_decode以获取有关如何使其工作的提示。

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

于 2013-04-18T20:07:57.270 回答