2013-04-18 144 views
2

我使用Base64.encodeToString对图像进行编码,将其添加到JSON主体并将其发送到Web服务进行存储。将base64编码的图像发送到损坏的图像

我的编码方法是这样的:

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; 
} 

我后来干脆呼吁JSONObject.add("encoded_image", encodeToBase64(bitImage));,并通过我的web服务类发送。

但是,当我在另一面获得图像时,它已经损坏。 PHP函数base64_decode执行并似乎提供图像,但是当我将该图像写入临时文件时,我无法打开它。它说图像是腐败的。我不确定从哪里开始寻找。

我已经看过其他线程,但他们的解决方案似乎没有工作。

帮助表示赞赏。谢谢。

回答

2

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

尝试添加NO_WRAP选项,以确保在生成的输出中不存在空格/破裂字符。

如果这没有帮助,请查看manual页面的base64_decode函数,以获取有关如何使其工作的提示。

如果您分析了您在android中发送的内容并在php中接收到日志(例如记录某些调试输出或检查断点),以查看是否有错误,也可能有所帮助。

+2

NO_WRAP实际上工作。看起来输出中有换行符。谢谢。 – Andrew