我见过很多例子,但仍然无法完成我的工作。 我使用下面的代码将我的图像编码为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已编码字符串。
以下是两件奇怪的事情。
请告诉我到底出了什么问题?
这是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";
}
输出结果无效。
答案 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';
}