我将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);