Java Base64编码位图返回长字符串
我使用以下代码对位图进行编码:Java Base64编码位图返回长字符串,java,android,encoding,bitmap,base64,Java,Android,Encoding,Bitmap,Base64,我使用以下代码对位图进行编码: public static String convertBitmapToBase64String(Bitmap bitmap) { ByteArrayOutputStream baos = new ByteArrayOutputStream(); String encodedImage = null; try { bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
public static String convertBitmapToBase64String(Bitmap bitmap) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
String encodedImage = null;
try {
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
byte[] byteArrayImage = baos.toByteArray();
encodedImage = Base64
.encodeToString(byteArrayImage, Base64.DEFAULT);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return encodedImage;
}
但是这个方法返回一个很长的字符串,因此我无法将我的图像上传到服务器 请帮忙
提前感谢。如果您的图像太大,您可以始终使用Bitmap.createScaledBitmap()将其调整得更小。base64对实际大小无能为力。编码将不可避免地将大小增加固定的百分比(约37%IIRC) 你唯一能做的就是缩小图像数据。您在此处使用的质量设置不合理:
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
100%质量的JPEG是多余的,83-90%对于大多数图像更合理。如果需要无损图像质量,请尝试PNG。JPEG不是为100%质量而设计的,生成的文件很可能会比最初使用无损图像格式的文件大。我猜你的图像很大?你希望它做什么?我们无法神奇地将图像大小或其Base-64表示的大小变小。”但此方法返回一个很长的字符串“是的,这是因为图像文件通常都很大。这就是野兽的本性。如果您指定的质量值为100,则没有帮助…将图像编码为Base64会产生图像的字符串大小+~30%的开销为什么不发送图像字节而发送Base64字符串?