java中用于图像的Base64编码字符串在php中无效

时间:2016-04-21 03:57:11

标签: java php android encoding

我见过很多例子,但仍然无法完成我的工作。 我使用下面的代码将我的图像编码为Base64字符串

public static String getStringImage(Bitmap bmp){
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    bmp.compress(Bitmap.CompressFormat.JPEG, 100, baos);
    byte[] imageBytes = baos.toByteArray();
    String encodedImage = Base64.encodeToString(imageBytes, Base64.NO_WRAP);
    Log.v(Constant.TAG,"Encoded String"+encodedImage);
    return encodedImage;
}

当我将此encodedImage发布到运行PHP的网络服务器时,它不会解码回图像 我使用下面的PHP代码

测试了它
if ( base64_encode(base64_decode($image, true)) === $image){
    echo '$data is valid';
} else {
        echo '$data is NOT valid';
}

$ image已编码字符串。

以下是两件奇怪的事情。

  1. java中的编码字符串在java中可解码,我可以将其解码并获取位图并成功使用图像视图显示它
  2. " =="符号未到达编码字符串的末尾。
  3. 请告诉我到底出了什么问题?

    这是base64代码: http://pixyfi.kgcorner.com/uploads/test.txt

    以下是上传图片的代码

    public static String makePostRequest(String url,String params)
    {
        String response="";
        try {
            URL restURL= new URL(url);
            HttpURLConnection connection=(HttpURLConnection)restURL.openConnection();
            connection.setDoOutput(true);
    
            OutputStream os= connection.getOutputStream();
            OutputStreamWriter writer= new OutputStreamWriter(os,"UTF-8");
            writer.write(params);
            writer.flush();
            InputStream is=new BufferedInputStream(connection.getInputStream());
            response=convertStreamToString(is);
        } catch (MalformedURLException e) {
            Log.e(Constant.TAG,e.getMessage(),e);
        } catch (IOException e) {
            Log.e(Constant.TAG,e.getMessage(),e);
        }
        return response;
    }
    

    param是包含我需要发送给服务器的所有参数的查询字符串。 图像=安培;细节=

    我如何在php端获取它

    $image=$_POST['image'];
    

    我如何验证

    if ( base64_encode(base64_decode($image, true)) === $image){
        echo "valid";
    } else {
            echo "NOT valid";
    }
    

    输出结果无效。

1 个答案:

答案 0 :(得分:0)

终于能够解决了。 我实际上发现java没有问题,实际上是用php。 下面是在php中解码图像的最终代码

$image = str_replace(' ','+',$image); //replacing ' ' with '+' 
if ( base64_encode(base64_decode($image, true)) === $image){
    echo '$data is valid';
} else {
        echo '$data is NOT valid';
}