解码从Android发送的图像后,图像大小在php中增加

时间:2016-07-05 07:52:47

标签: php android upload

我将android中的图像作为base64字符串发送到PHP。在PHP中解码图像后,图像的大小增加。例如,图像的大小为60kb,然后在PHP中解码后,它变为200kb。如何在PHP中保持相同的文件大小。

$rimage=$_POST['profile'];
$decodedImage = base64_decode($rimage);  

将$ decodeImage直接存储到文件夹中。我尝试过使用imagecreatefromstring($ decodingImage),但这并没有解决问题。

将图片转换为base64字符串的Android代码

public String getStringImage(Bitmap bmp) throws UnsupportedEncodingException {
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    bmp.compress(Bitmap.CompressFormat.JPEG, 100, baos);
    byte[] imageBytes = baos.toByteArray();
    return Base64.encodeToString(imageBytes, Base64.DEFAULT);
}

在此之后我将使用Volley将其发送到PHP服务器。

问题通过使用以下代码而不是上面的代码重新压缩图像来解决问题。

  InputStream inputStream = new FileInputStream(fileName);//You can get aninputStream using any IO API
  byte[] bytes;
  byte[] buffer = new byte[8192];
  int bytesRead;
  ByteArrayOutputStream output = new ByteArrayOutputStream();
  try {
   while ((bytesRead = inputStream.read(buffer)) != -1) {
   output.write(buffer, 0, bytesRead);
  }
  } catch (IOException e) {
  e.printStackTrace();
  }
  bytes = output.toByteArray();
 String encodedString = Base64.encodeToString(bytes, Base64.DEFAULT);

0 个答案:

没有答案